因为我很多STL的用法不太会,所以直接看了参考答案,通过算至少k个辅音字母子字符串和至少k+1个辅音字母子字符串的个数,然后相减就是恰好k个辅音字母子字符串的个数。
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);}
};