3305. 元音辅音字符串计数 I
题目链接:3305. 元音辅音字符串计数 I
代码如下:
class Solution {
public:
long long countOfSubstrings(string word, int k) {
return f(word, k) - f(word, k + 1);
}
private:
long long f(string& word, int k) {
long long res = 0;
unordered_map<char, int> cnt1;//每种元音的个数
int cnt2 = 0;//辅音个数
int left = 0;
for (char b : word) {
if (VOWEL.find(b) != string::npos) {
cnt1[b]++;
}
else {
cnt2++;
}
while (cnt1.size() == 5 && cnt2 >= k) {
char out = word[left];
if (VOWEL.find(out) != string::npos) {
cnt1[out]--;
if (cnt1[out] == 0) {
cnt1.erase(out);
}
}
else {
cnt2--;
}
left++;
}
res += left;
}
return res;
}
const string VOWEL = "aeiou";
};