LeetCode 3306. 元音辅音字符串计数 II(滑动窗口)
原题链接
中等
作者:
autumn_0
,
2024-09-29 13:30:33
,
所有人可见
,
阅读 7
class Solution {
public long countOfSubstrings(String word, int k) {
char[] s = word.toCharArray();
return f(s, k) - f(s, k + 1);
}
private long f(char[] word, int k){
long ans = 0;
HashMap<Character, Integer> cnt1 = new HashMap<>();
int cnt2 = 0;
int left = 0;
for(char b: word){
if("aeiou".indexOf(b) >= 0){
cnt1.merge(b, 1, Integer::sum);
} else {
cnt2 ++ ;
}
while(cnt1.size() == 5 && cnt2 >= k){
char out = word[left];
if("aeiou".indexOf(out) >= 0){
if(cnt1.merge(out, -1, Integer::sum) == 0) {
cnt1.remove(out);
}
} else {
cnt2 -- ;
}
left ++ ;
}
ans += left;
}
return ans;
}
}