因为我很多STL的用法不太会,所以直接看了参考答案,通过算至少k个辅音字母子字符串和至少k+1个辅音字母子字符串的个数,然后相减就是恰好k个辅音字母子字符串的个数。
cpp
class Solution {
public:
long long cnt(string word, int k){
set<char> v = {'a', 'e','i','o','u'};
long long res = 0 * 1L;
int n = word.size();
map<char, int> tmp;
int f = 0;
for(int i = 0, j = 0; i < n; i ++) {
// int j = i;
while(j < n && (f < k || tmp.size() < v.size())) {
if(v.count(word[j])) {
tmp[word[j]] ++;
}
else {
f++;
}
j ++;
}
if(f >= k && tmp.size() == v.size()) res += (n - j + 1);
if(v.count(word[i])) {
tmp[word[i]] --;
if(tmp[word[i]] == 0) tmp.erase(word[i]);
}
else {
f --;
}
}
return res;
}
long long countOfSubstrings(string word, int m) {
return cnt(word, m) - cnt(word, m + 1);
}
};