Given a string ‘str’ and an integer ‘k’, the task is to count the number of sub-strings of length ‘k’ which are comprised of the same character. Given string contains only lowercase alphabets.
Input: str = "aaaabbbccdddd", k=4 Output: 2 The sub-strings of length 4 which contain identical characters are 'aaaa' and 'dddd'. So, the count is 2. Input: str = "aaaaaa", k=4 Output: 3
A simple approach:
- Find all the sub-strings of the string that are of length ‘k’.
- Check if those sub-strings are composed of only ‘1’ character.
- If the above conditions hold then increase the count.
- Display the count.
Efficient approach: We will use Window sliding technique to solve this problem.
- Take a sub-string of length ‘k’ (which is the first ‘k’ characters).
- Then, add next character to the sub-string.
- If the length of the sub-string is greater than ‘k’ then remove the character from the beginning of the string.
- And, count the frequency of the characters in the sub-string with the help of a map.
- If the frequency of one of the sub-string’s character is equal to length of the sub-string itself i.e. all the characters are same.
- Then, increase the count else repeat the steps above until the there’s no more character to add in the end.
- Display the total count in the end.
Below is the implementation of the above approach :
// remove the character from
// the beginning of sub-string
// if the length of the sub string
// is equal to k and frequency of one
// of its characters is equal to the
// length of the sub-string
// i.e. all the characters are same
// increase the count
if ($length == $k && $m[$s[$i]] == $length)
// display the number
// of valid sub-strings
echo $count . “\n”;
// Driver code
$s = “aaaabbbccdddd”;
$k = 4;
// This code is contributed
// by ChitraNayal
- Count substrings that starts with character X and ends with character Y
- Number of substrings with count of each character as k
- Count substrings with each character occurring at most k times
- Print Kth character in sorted concatenated substrings of a string
- Count all Prime Length Palindromic Substrings
- Convert all substrings of length 'k' from base 'b' to decimal
- Find number of substrings of length k whose sum of ASCII value of characters is divisible by k
- Minimum K such that every substring of length atleast K contains a character c
- Minimize the length of string by removing occurrence of only one character
- Longest Common Prefix using Character by Character Matching
- Replace every character of string by character whose ASCII value is K times more than it
- Find a string such that every character is lexicographically greater than its immediate next character
- Replace every character of a string by a different character
- Shortest distance to every other character from given character
- Check if frequency of character in one string is a factor or multiple of frequency of same character in other string