Check if count of 1s can be made greater in a Binary string by changing 0s adjacent to 1s
Given a binary string S of size N, the task is to check if the count of 1s can be made greater than the count of 0s by changing the 0s adjacent to 1s to any other characters. If it is possible, then print Yes. Otherwise, print No.
Note: Any index having 1 can be chosen at most once.
Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready. To complete your preparation from learning a language to DS Algo and many more, please refer Complete Interview Preparation Course.
Input: S = “01”
Choose ‘1’ at index 1 and change its left adjacent 0 to ‘_’, modifies the string to “_1”.
Now, the count of 1s is 1 which is greater than the count of 0’s i.e., 0. Therefore, print Yes.
Input: S = “001110000”
Approach: The given problem can be solved by counting the number of 1s and 0s in the string S and then while traversing the string if any index i at which the value is ‘1’ and if left-side or right-side(Not Both) is ‘0’ then change it to ‘_’. The value is changed to ‘_’ and not ‘1’ so that it is not used again. After changing the value, decrease the count of 0’s by 1. Follow the steps below to solve the problem:
- Initialize two variables, say cnt0 and cnt1 as 0 to store the count of 0s and 1s.
- Traverse the string S and store the count of 1s and 0s in the variables cnt0 and cnt1 respectively.
- Traverse the string S from the left side and check current character is 1 if found to be true then check for the condition:
- if(i > 0 && S[i – 1] == ‘0’) if it is found to be true then change the left adjacent 0 to S[i-1] = ‘_’ and decrement the value of cnt0 by 1.
- else if(i < S.length() && S[i+1] == ‘0’) if it is found to be true then change the right 0 to S[i+1] = ‘_’ and decrement the value of cnt0 by 1.
- After completing the above steps, if the value of (cnt1 > cnt0), then print “Yes”. Otherwise, print “No”.
Below is the implementation for the above approach:
Time Complexity: O(N)
Auxiliary Space: O(1)