Dadas dos strings binarias M y N de igual longitud, la tarea es encontrar un número mínimo de operaciones (intercambios) necesarias para convertir la string N en M.
Ejemplos:
Input: str1 = "1101", str2 = "1110" Output: 1 Swap last and second last element in the binary string, so that it become 1101 Input: str1 = "1110000", str2 = "0001101" Output: 3
Enfoque: inicialice el contador e itere sobre la M de modo que si se encuentran elementos no iguales en ambas strings binarias, incremente el contador. Al final, si el contador es par, imprima el resultado/2 porque para un intercambio, dos elementos no son idénticos.
Supongamos que S1 = «10» y S2 = «01» , por lo que dos pares no son idénticos, el conteo = 2 y como el conteo es par, el número de intercambios es conteo/2, es decir, 1. El conteo par determina que hay posibilidades de intercambiar los elementos.
A continuación se muestra la implementación del enfoque anterior:
C++
// C++ implementation of the above approach #include <bits/stdc++.h> using namespace std; // Method to count swaps void minSwaps(string str1, string str2) { // Initialize the count int count = 0; // Iterate the loop with str1 length for (int i = 0; i < str1.length(); i++) { // If any non-equal elements are found // increment the counter if (str1[i] != str2[i]) count++; } // If counter is even print the swap if (count % 2 == 0) cout << count / 2; else cout << "Not Possible"; } // Driver code int main() { // Take two input string binaryString1 = "1110000"; string binaryString2 = "0001101"; // Call the method minSwaps(binaryString1, binaryString2); return 0; }
Java
// Java Program to count minimum number of swap // required to make string N to M public class GFG { // Method to count swaps static void minSwaps(String str1, String str2) { // Initialize the count int count = 0; // Iterate the loop with str1 length for (int i = 0; i < str1.length(); i++) { // If any non-equal elements are found // increment the counter if (str1.charAt(i) != str2.charAt(i)) count++; } // If counter is even print the swap if (count % 2 == 0) System.out.println(count / 2); else System.out.println("Not Possible"); } // Driver Code public static void main(String args[]) { // Take two input String binaryString1 = "1110000"; String binaryString2 = "0001101"; // Call the method minSwaps(binaryString1, binaryString2); } }
Python 3
# Python3 implementation of # the above approach # function to count swaps def minSwaps(str1, str2) : # Initialize the count count = 0 # Iterate the loop with # length of str1 for i in range(len(str1)) : # If any non-equal elements are # found increment the counter if str1[i] != str2[i] : count += 1 # If counter is even print # the swap if count % 2 == 0 : print(count // 2) else : print("Not Possible") # Driver code if __name__ == "__main__" : # Take two input binaryString1 = "1110000" binaryString2 = "0001101" # Call the function minSwaps( binaryString1, binaryString2) # This code is contributed by ANKITRAI1
C#
// C# Program to count minimum number of swap // required to make string N to M using System; class GFG { // Method to count swaps static void minSwaps(string str1, string str2) { // Initialize the count int count = 0; // Iterate the loop with str1 length for (int i = 0; i < str1.Length; i++) { // If any non-equal elements are found // increment the counter if (str1[i] != str2[i]) count++; } // If counter is even print the swap if (count % 2 == 0) Console.WriteLine(count / 2); else Console.WriteLine("Not Possible"); } // Driver Code public static void Main() { // Take two input string binaryString1 = "1110000"; string binaryString2 = "0001101"; // Call the method minSwaps(binaryString1, binaryString2); } } // This code is contributed // by Akanksha Rai(Abby_akku)
PHP
<?php // PHP implementation of the above // approach // Method to count swaps function minSwaps($str1, $str2) { // Initialize the count $count = 0; // Iterate the loop with str1 length for ($i = 0; $i < strlen($str1); $i++) { // If any non-equal elements are // found increment the counter if ($str1[$i] != $str2[$i]) $count++; } // If counter is even print the swap if ($count % 2 == 0) echo ($count / 2); else echo "Not Possible"; } // Driver code // Take two input $binaryString1 = "1110000"; $binaryString2 = "0001101"; // Call the method minSwaps($binaryString1, $binaryString2); // This code is contributed // by Sach_Code ?>
Javascript
<script> // JavaScript Program to count minimum number of swap // required to make string N to M // Method to count swaps function minSwaps(str1, str2) { // Initialize the count var count = 0; // Iterate the loop with str1 length for (var i = 0; i < str1.length; i++) { // If any non-equal elements are found // increment the counter if (str1[i] !== str2[i]) count++; } // If counter is even print the swap if (count % 2 === 0) document.write(count / 2); else document.write("Not Possible"); } // Driver Code // Take two input var binaryString1 = "1110000"; var binaryString2 = "0001101"; // Call the method minSwaps(binaryString1, binaryString2); </script>
3
Complejidad de tiempo: O(n)
Publicación traducida automáticamente
Artículo escrito por bilal-hungund y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA