Open In App

Minimum substring flips required to convert given binary string to another

Last Updated : 11 Jun, 2021
Comments
Improve
Suggest changes
3 Likes
Like
Report

Given two binary strings A and B, the task is to find the minimum number of times a substring starting from the first character of A needs to be flipped, i.e. convert 1s to 0s and 0s to 1s, to convert A to B.

Examples:

Input: A = “0010”, B = “1011”
Output; 3
Explanation:
Step 1: Flip the entire string A. Therefore, A becomes “1101” .
Step 2: Flip the substring {A[0], A[2]}. Therefore, A becomes "0011" .
Step 3: Flip A[0]. Therefore, A becomes "1011" which is equal to B.
Therefore, the minimum number of operations required is 3.

Input: A = “1010101”, B = “0011100”
Output: 5
Explanation:
Step 1: Flip the entiThehrefore, A becomes “0101010"
Step 2: Flip substring {A[0], A[5]}. Therefore, A becomes “1010100"
Step 3: Flip the substring {A[0], A[3]}. Therefore, A becomes “0101100"
Step 4: Flip the substring {A[0], A[2]}. Therefore, A becomes “1011100"
Step 5: Flip A[0]. Therefore, A becomes "0011100" which is equal to B.
Therefore, the minimum number of operations required is 5.

Approach: The idea is to initialize a variable that holds the last index at which character at A is different from the character at B. Then negate A from the 1st index to the last index. Repeat until both strings become equal. Follow the steps below to solve the problem:

  • Initialize a variable last_index that holds the last index at which characters are different in A and B.
  • Negate string A from the 1st index to last_index and increment the count of steps.
  • Repeat the above steps until string A becomes equal to string B.
  • Print the count of steps after both the strings are the same after performing the operations.

Below is the implementation of the above approach:

C++
Java Python3 C# JavaScript

Output: 
4

 

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


Next Article

Similar Reads