Minimum number of given operations required to convert a string to another string - GeeksforGeeks

28 May, 2021
Given two strings S and T of equal length. Both strings contain only the characters ‘0’ and ‘1’. The task is to find the minimum number of operations to convert string S to T. There are 2 types of operations allowed on string S: 
Swap any two characters of the string.
Replace a ‘0’ with a ‘1’ or vice versa.
Examples: 
Input: S = “011”, T = “101” Output: 1 Swap the first and second character.
Input: S = “010”, T = “101” Output: 2 Swap the first and second character and replace the third character with ‘1’.  
Approach: Find 2 values for the string S, the number of indices that have 0 but should be 1 and the number of indices that have 1 but should be 0. The result would be the maximum of these 2 values since we can use swaps on the minimum of these 2 values and the remaining unmatched characters can be inverted i.e. ‘0’ can be changed to ‘1’ and ‘1’ can be changed to ‘0’.
Below is the implementation of the above approach:  
C++
Java
Python3
C#
PHP
Javascript
// C++ implementation of the approach#include <bits/stdc++.h>using namespace std; // Function to return the minimum operations// of the given type required to convert// string s to string tint minOperations(string s, string t, int n){    int ct0 = 0, ct1 = 0;    for (int i = 0; i < n; i++) {         // Characters are already equal        if (s[i] == t[i])            continue;         // Increment count of 0s        if (s[i] == '0')            ct0++;         // Increment count of 1s        else            ct1++;    }     return max(ct0, ct1);} // Driver codeint main(){    string s = "010", t = "101";    int n = s.length();    cout << minOperations(s, t, n);     return 0;}
// Java implementation of the approachimport java.util.*; class GFG{ // Function to return the minimum// operations of the given type required// to convert string s to string tstatic int minOperations(String s,                        String t, int n){    int ct0 = 0, ct1 = 0;    for (int i = 0; i < n; i++)    {         // Characters are already equal        if (s.charAt(i) == t.charAt(i))            continue;         // Increment count of 0s        if (s.charAt(i) == '0')            ct0++;         // Increment count of 1s        else            ct1++;    }     return Math.max(ct0, ct1);} // Driver codepublic static void main(String args[]){    String s = "010", t = "101";    int n = s.length();    System.out.println(minOperations(s, t, n));}} // This code is contributed by// Surendra_Gangwar
# Python 3 implementation of the approach # Function to return the minimum operations# of the given type required to convert# string s to string tdef minOperations(s, t, n):     ct0 = 0    ct1 = 0    for i in range(n):         # Characters are already equal        if (s[i] == t[i]):            continue         # Increment count of 0s        if (s[i] == '0'):            ct0 += 1         # Increment count of 1s        else:            ct1 += 1     return max(ct0, ct1) # Driver codeif __name__ == "__main__":         s = "010"    t = "101"    n = len(s)    print(minOperations(s, t, n)) # This code is contributed by ita_c
// C# implementation of the approachusing System;class GFG{ // Function to return the minimum operations// of the given type required to convert// string s to string tstatic int minOperations(string s,                          string t, int n){    int ct0 = 0, ct1 = 0;    for (int i = 0; i < n; i++)    {         // Characters are already equal        if (s[i] == t[i])            continue;         // Increment count of 0s        if (s[i] == '0')            ct0++;         // Increment count of 1s        else            ct1++;    }     return Math.Max(ct0, ct1);} // Driver codepublic static void Main(){    string s = "010", t = "101";    int n = s.Length;    Console.Write(minOperations(s, t, n));}} // This code is contributed// by Akanksha Rai
<?php// PHP implementation of the approach // Function to return the minimum operations// of the given type required to convert// string s to string tfunction minOperations($s, $t, $n){    $ct0 = 0 ; $ct1 = 0;    for ($i = 0; $i < $n; $i++)    {         // Characters are already equal        if ($s[$i] == $t[$i])            continue;         // Increment count of 0s        if ($s[$i] == '0')            $ct0++;         // Increment count of 1s        else            $ct1++;    }     return max($ct0, $ct1);} // Driver code$s = "010"; $t = "101";$n = strlen($s);echo minOperations($s, $t, $n); // This code is contributed by Ryuga?>
<script> // JavaScript implementation of the approach // Function to return the minimum operations// of the given type required to convert// string s to string tfunction minOperations(s, t, n){    var ct0 = 0,    ct1 = 0;    for(var i = 0; i < n; i++)    {        // Characters are already equal        if (s[i] === t[i])            continue;                 // Increment count of 0s        if (s[i] === "0")            ct0++;                     // Increment count of 1s        else            ct1++;    }    return Math.max(ct0, ct1);} // Driver codevar s = "010",t = "101";var n = s.length; document.write(minOperations(s, t, n)); // This code is contributed by rdtank </script>
2
 
Time Complexity: O(N) 
ankthon
ukasp
SURENDRA_GANGWAR
Akanksha_Rai
rdtank
array-traversal-question
binary-string
Strings
Strings
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Check for Balanced Brackets in an expression (well-formedness) using Stack
Python program to check if a string is palindrome or not
KMP Algorithm for Pattern Searching
Different methods to reverse a string in C/C++
Array of Strings in C++ (5 Different Ways to Create)
Convert string to char array in C++
Longest Palindromic Substring | Set 1
Caesar Cipher in Cryptography
Check whether two strings are anagram of each other
Top 50 String Coding Problems for Interviews