字符串滑动窗口,利用队列记录窗口内的元音索引,每次移动窗口,都pop窗口外索引和更新结果。
#include <unordered_map>
#include <queue>
class Solution {
public:
int maxVowels(string s, int k) {
queue<int> vowels_q;
int res = 0;
for (int i = 0; i < k; i++) {
if (vowels_map.count(s[i]) > 0) {
vowels_q.push(i);
}
}
res = vowels_q.size();
for (int j = k; j < s.size(); j++) {
if (vowels_q.size() > 0 && j-k >= vowels_q.front()) {
vowels_q.pop();
}
if (vowels_map.count(s[j]) > 0) {
vowels_q.push(j);
}
if (vowels_q.size() > res) {
res = vowels_q.size();
}
}
return res;
}
private:
unordered_map<char, int> vowels_map = {
{'a', 1},
{'e', 1},
{'i', 1},
{'o', 1},
{'u', 1}
};
};