# Minimize flipping of bits in given Binary string to make count of 10 equal to 01

• Difficulty Level : Medium
• Last Updated : 24 Jan, 2022

Given binary string str, the task is to choose any index and change into 0 or 1, and do this in minimum steps such that the count of substring 01 is equal to 10.

Examples:

Input: str = “01101”
Output: 01100
Explanation: 01 as a substring repeat 2 times in a string, 10 as a substring repeat 1 times in a string. So, change last char 1 into 0 then count of 01 and 10 is 1 and equal

Input: str = “01101010”
Output: 01101010

Approach: If we can observe that if the first and last character of the string is the same so the count of “01” is equal to 1 because by induction is always one character is present in the middle of the string so, we can split a string into two parts s[1….i], [i…n] so AB(s) = BA(s).

• If the first and last characters are not the same, then change the first character to the last character.
• After performing the above steps, print the value of str as the answer.

Below is the implementation of the above approach.

## C++

 `// C++ program for the above approach``#include ``using` `namespace` `std;` `// Function to make the count equal``string MakeEqual(string str)``{` `    ``// Take first and last char of string``    ``char` `FirstChar = str;``    ``char` `LastChar = str[str.size() - 1];` `    ``// Compare both the char``    ``if` `(FirstChar != LastChar) {` `        ``// Copy lastchar inplace of``        ``// firstchar or viceversa``        ``str = LastChar;``    ``}` `    ``// If above condition is not true so``    ``// string remain unchanged``    ``// Return string``    ``return` `str;``}` `// Driver Code``int` `main()``{` `    ``string str = ``"0110101"``;``    ``string ans = MakeEqual(str);``    ``cout << ans;``    ``return` `0;``}`

## Java

 `// Java program for the above approach``class` `GFG``{``  ` `  ``// Function to make the count equal``  ``static` `String MakeEqual(String str) {` `    ``// Take first and last char of String``    ``char` `FirstChar = str.charAt(``0``);``    ``char` `LastChar = str.charAt(str.length() - ``1``);` `    ``// Compare both the char``    ``if` `(FirstChar != LastChar) {` `      ``// Copy lastchar inplace of``      ``// firstchar or viceversa``      ``str = str.substring(``1``, str.length());``      ``str = LastChar + str;` `    ``}` `    ``// If above condition is not true so``    ``// String remain unchanged``    ``// Return String``    ``return` `str;``  ``}` `  ``// Driver Code``  ``public` `static` `void` `main(String args[]) {` `    ``String str = ``"0110101"``;``    ``String ans = MakeEqual(str);``    ``System.out.println(ans);``  ``}``}` `// This code is contributed by saurabh_jaiswal.`

## Python3

 `# python3 program for the above approach` `# Function to make the count equal``def` `MakeEqual(``str``):` `    ``# Take first and last char of string``    ``FirstChar ``=` `str``[``0``]``    ``LastChar ``=` `str``[``-``1``]` `    ``# Compare both the char``    ``if` `(FirstChar !``=` `LastChar):` `        ``# Copy lastchar inplace of``        ``# firstchar or viceversa``        ``str``[``0``] ``=` `LastChar` `    ``# If above condition is not true so``    ``# string remain unchanged``    ``# Return string``    ``return` `''.join(``str``)` `# Driver Code``if` `__name__ ``=``=` `"__main__"``:` `    ``str` `=` `"0110101"``    ``ans ``=` `MakeEqual(``list``(``str``))``    ``print``(ans)` `    ``# This code is contributed by rakeshsahni`

## C#

 `// C# program for the above approach``using` `System;` `public` `class` `GFG``{``  ` `  ``// Function to make the count equal``  ``static` `String MakeEqual(String str) {` `    ``// Take first and last char of String``    ``char` `FirstChar = str;``    ``char` `LastChar = str[str.Length - 1];` `    ``// Compare both the char``    ``if` `(FirstChar != LastChar) {` `      ``// Copy lastchar inplace of``      ``// firstchar or viceversa``      ``str = str.Substring(1, str.Length - 1);``      ``str = LastChar + str;` `    ``}` `    ``// If above condition is not true so``    ``// String remain unchanged``    ``// Return String``    ``return` `str;``  ``}` `  ``// Driver Code``  ``public` `static` `void` `Main(String []args) {` `    ``String str = ``"0110101"``;``    ``String ans = MakeEqual(str);``    ``Console.WriteLine(ans);``  ``}``}` `// This code is contributed by shikhasingrajput`

## Javascript

 ``

Output:
`1110101`

Time Complexity: O(1)
Auxiliary Space: O(1)

My Personal Notes arrow_drop_up