LeetCode 1456 定长子串中元音个数

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;

    }

};