Given a binary string find the longest substring which contains 1’s more than 0’s.
Input : 1010 Output : 3 Substring 101 has 1 occurring more number of times than 0. Input : 101100 Output : 5 Substring 10110 has 1 occurring more number of times than 0.
A simple solution is to one by one consider all the substrings and check if that substring has a count of 1 more than 0. If the count is more than comparing its length with maximum length substring found till now. The time complexity of this solution is O(n^2).
An efficient solution is to use hashing. The idea is to find the sum of string traversed until now. Add 1 to the result if the current character is ‘1’ else subtract 1. Now the problem reduces to finding the largest subarray having a sum greater than zero. To find the largest subarray having a sum greater than zero, we check the value of the sum. If sum is greater than zero, then the largest subarray with a sum greater than zero is arr[0..i]. If the sum is less than zero, then find the size of subarray arr[j+1..i], where j is index up to which sum of subarray arr[0..j] is sum -1 and j < i and compare that size with largest subarray size found so far. To find index j, store values of sum for arr[0..j] in hash table for all 0 <= j <= i. There might be a possibility that a given value of sum repeats. In that case store only first index for which that sum is obtained as it is required to get the length of largest subarray and that is obtained from first index occurrence.
Below is the implementation of above approach:
Time Complexity: O(n)
Auxiliary Space: O(n)
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.
- Count of binary strings of length N having equal count of 0's and 1's and count of 1's ≥ count of 0's in each prefix substring
- Longest substring of vowels
- Longest Common Substring | DP-29
- Longest Non-palindromic substring
- Longest Palindromic Substring | Set 1
- Longest Palindromic Substring | Set 2
- Longest substring such that no three consecutive characters are same
- Longest Even Length Substring such that Sum of First and Second Half is same
- Length of the longest valid substring
- Longest repeating and non-overlapping substring
- Length of longest substring having all characters as K
- Longest substring having K distinct vowels
- Length of the longest substring that do not contain any palindrome
- Longest substring that starts with X and ends with Y
- Longest equal substring with cost less than K
- Print the longest common substring
- Length of the longest substring with equal 1s and 0s
- Longest Common Substring in an Array of Strings
- Longest substring of vowels with no two adjacent alphabets same
- Print Longest substring without repeating characters
If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to email@example.com. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.