Medium
Given a string s and an integer k, return the total number of substrings of s where at least one character appears at least k times.
Example 1:
Input: s = “abacb”, k = 2
Output: 4
Explanation:
The valid substrings are:
"aba" (character 'a' appears 2 times)."abac" (character 'a' appears 2 times)."abacb" (character 'a' appears 2 times)."bacb" (character 'b' appears 2 times).Example 2:
Input: s = “abcde”, k = 1
Output: 15
Explanation:
All substrings are valid because every character appears at least once.
Constraints:
1 <= s.length <= 30001 <= k <= s.lengths consists only of lowercase English letters.public class Solution {
public int numberOfSubstrings(String s, int k) {
int left = 0;
int result = 0;
int[] count = new int[26];
for (int i = 0; i < s.length(); i++) {
char ch = s.charAt(i);
count[ch - 'a']++;
while (count[ch - 'a'] == k) {
result += s.length() - i;
char atLeft = s.charAt(left);
count[atLeft - 'a']--;
left++;
}
}
return result;
}
}