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.”
GeeksforGeeks has prepared a complete interview preparation course with premium videos, theory, practice problems, TA support and many more features. Please refer Placement 100 for details
- 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
- Longest equal substring with cost less than K
- Length of the longest substring with equal 1s and 0s
- Check if frequency of each character is equal to its position in English Alphabet
- Check if frequency of character in one string is a factor or multiple of frequency of same character in other string
- Maximum length prefix such that frequency of each character is atmost number of characters with minimum frequency
- Longest Common Prefix using Character by Character Matching
- Frequency of a substring in a string
- Frequency of a substring in a string using pthread
- Substring with highest frequency length product
- Maximum length substring with highest frequency in a string
- Frequency of each character in a String using unordered_map in C++
- Number of Positions to partition the string such that atleast m characters with same frequency are present in each substring
- Print the frequency of each character in Alphabetical order
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.