Given a string S containing 0’s and 1’s, the task is to find the length of longest continuous substring of 0’s from the given string.
Examples:
Input: S = 1111111 Output: 0 Explanation: There is no substring of 0's hence output is 0.
Approach: The given problem can be solved by simply iterating through the string.
Follow the steps below to solve the given problem:
- Initialize a variable say currCount = 0, to keep the track of current length of the continuous substring of 0’s.
- Initialize a variable say maxCount = 0, to store the maximum length of the continuous substring of 0’s.
- Initialize a variable N to store the length of given string and i = 0 which acts as a iterator in the loop.
- Iterate a loop till i < and do the following operations:
- if S[i] == ‘0’ then increase currCount by one.
- else whenever we getting the element 1 we will re-assign maxCount to maximum of maxCount and currCount
Also we will make currCount = 0.
- Now again check whether the currCount > 0 or currCount = 0
- if currCount > 0, re-assign maxCount to maximum of maxCount and currCount .
- After completing the above steps, print the value of maxCount as the result.
Below is the implementation of the above approach:
// C++ program for the above approach #include <bits/stdc++.h> using namespace std; int getMaxLength(string S) { // To store current count of substring int currCount = 0; // To store final maximum count of substring int maxCount = 0; // Variable to iterate over a string int i = 0; for (i = 0; i < S.length(); i++) { // if string element is 0 // increase the currCount if (S[i] == '0') currCount++; // if string element is 1 // re-assign maxCount and make currCount = 0 else { maxCount = max(maxCount, currCount); currCount = 0; } } // for checking the last substring which is not followed // by 1 the currCount may greater than zero hence // re-assigning maxCount if currCount > 0 if (currCount > 0) maxCount = max(maxCount, currCount); // Return final result return maxCount; } // Driver Code int main() { // input string string S("10010000"); int maxLength = getMaxLength(S); cout << maxLength; }
Output:
4