Open in App
Not now

# Minimum swaps required to convert one binary string to another

• Difficulty Level : Medium
• Last Updated : 28 Sep, 2022

Given two binary string M and N of equal length, the task is to find a minimum number of operations (swaps) required to convert string N to M.

Examples:

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

Approach:

Initialize the counter and Iterate over the M such that if any non-equal elements found in both binary strings, increment the counter. In the end, if the counter is even then print the result/2 because for one swap two elements are non-identical.

Suppose S1 = “10” and S2 = “01”, so two pairs are non-identical, the count = 2 and as the count is even, so number of swaps are count/2, i.e. 1. Even count determines that there are chances to swap the elements.

Below is the implementation of the above approach:

## C++

 // C++ implementation of the above approach #include 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)



## Javascript



Output

3

Time Complexity: O(n)

Auxiliary Space: O(1) it is using constant space for variables

My Personal Notes arrow_drop_up
Related Articles