LeetCode 1456 定长子串中元音个数
🟢 简单
https://leetcode.cn/problems/maximum-number-of-vowels-in-a-substring-of-given-length/description/
思路
先遍历一个k的大小,再开始滑动,左边如果出去一个元音就减一,右边如果进入一个元音就加一
class Solution {
public:
bool is_yuan_yin(const char& s){
return s == 'a' || s == 'e' || s == 'i' || s == 'o' || s == 'u';
}
int maxVowels(const string& s, int k) {
int res = 0;
int count = 0;
// 初始窗口的元音计数
for(int i = 0; i < k && i < s.size(); i++){
if(is_yuan_yin(s[i])){
count++;
}
}
res = count;
// 滑动窗口
for(int i = k; i < s.size(); i++){
if(is_yuan_yin(s[i])) count++;
if(is_yuan_yin(s[i - k])) count--;
res = max(res, count);
if(res == k) break; // 提前退出,如果已经找到了最大的可能值
}
return res;
}
};