Given a string str of length n. The problem is to find the length of the longest sub-string in str having frequency of each character less than equal to the given value k.
Input : str = "babcaag", k = 1 Output : 3 abc and bca are the two longest sub-strings having frequency of each character in them less than equal to '1'. Input : str = "geeksforgeeks", k = 2 Output : 10
Approach: Create an array freq of size 26 implemented as hash table to store the frequency of each character of str. Initialize all of its indexes with value ‘0’. Length of the string is n. Now implement the following algorithm.
longSubstring(str, k) Initialize start = 0 Initialize maxLen = 0 Declare ch for i = 0 to n-1 ch = str[i] freq[ch - 'a']++ if k < freq[ch - 'a'] then if maxLen < (i - start) then maxLen = i - start while (k < freq[ch - 'a']) freq[str[start] - 'a']-- start++ if maxLen < (n - start) then maxLen = n - start return maxLen
Length = 3
Time Complexity: O(n).
Auxiliary Space: O(1).
Because of the while loop the complexity might seem quadratic but if we look closely the inner while loop will traverse the string single time only.”
- Length of the largest substring which have character with frequency greater than or equal to half of the substring
- Character whose frequency is equal to the sum of frequencies of other characters of the given string
- Length of the longest substring with equal 1s and 0s
- Check if frequency of character in one string is a factor or multiple of frequency of same character in other string
- Frequency of a substring in a string
- Longest Common Prefix using Character by Character Matching
- Frequency of a substring in a string using pthread
- Substring with highest frequency length product
- Maximum length substring with highest frequency in a string
- Number of Positions to partition the string such that atleast m characters with same frequency are present in each substring
- Printing frequency of each character just after its consecutive occurrences
- Index of character depending on frequency count in string
- Print number of words, vowels and frequency of each character
- Check if the frequency of any character is more than half the length of the string
- Longest prefix in a string with highest frequency
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.