Given a binary string S consisting of 0s and 1s. The task is to find the maximum difference of the number of 0s and the number of 1s (number of 0s – number of 1s) in the substrings of a string.
Note: In the case of all 1s, the answer will be -1.
Example 1:
Input : S = "11000010001"
Output : 6
Explanatio: From index 2 to index 9,
there are 7 0s and 1 1s, so number
of 0s - number of 1s is 6.
Example 2:
Input: S = "111111" Output: -1 Explanation: S contains 1s only
Your task:
You do not need to read any input or print anything. The task is to complete the function maxSubstring(), which takes a string as input and returns an integer.
Expected Time Complexity: O(|S|)
Expected Auxiliary Space: O(|S|)
Constraints:
1 ≤ |S| ≤ 105
S contains 0s and 1s only
Solution(Only function):
class Solution {
int maxSubstring(String S) {
// code here
int max_until=0;
int ma=Integer.MIN_VALUE;
for(int i=0;i<S.length();i++){
int x=(S.charAt(i)=='0')?1:-1;
max_until+=x;
if(max_until>ma) ma=max_until;
if(max_until<0) max_until=0;
}
return ma;
}
}
No comments:
Post a Comment