Given two binary strings str1 and str2, the task is to check whether it is possible to convert str1 to str2 by combining two consecutive 0’s into a single 1 repeatedly.
Input: str1 = “00100”, str2 = “111” Output: Yes Explaination: Combine first two zeros to one and combine last two zeros to one.
Input: str1 = “00”, str2 = “000” Output: No Explaination: It is not possible to convert str1 to str2.
Approach: Let’s process str1 and str2 character by character from left to right in parallel. Let’s use two indices i and j: the index i is for str1 and the index j is for str2. Now, there are two cases:
If str1[i] = str2[j] then increment both i and j.
If str1[i] != str2[j] then,
If there are two consecutive 0’s in str1 i.e. str1[i] = 0 and str1[i + 1] = 0 and str2[j] = 1 which means both the zeroes can be combined to match with the 1 in str2. So, increment i by 2 and j by 1.
Else str1 cannot be converted to str2.
If in the end both i and j are at the end of their respective strings i.e. str1 and str2 then the answer is Yes else the answer is No.
Below is the implementation of the above approach:
Please Login to comment...