目录
题目:
示例:
分析:
代码+运行结果:
题目:
示例:
分析:
就难度而言,我觉得算不上中等,因为和上一题基本一致,只不过上一题是求最大平均数,而这一题是求最大元音数,并且都是固定长度的滑动窗口。
我们只需要在窗口滑动的时候判断滑出窗口的字符是不是元音字符,以及滑入窗口的字符是不是元音字符,然后再相应的将元音数进行加一减一即可。
参考上一题的题解再看看下面的代码,应该是很好理解的。
代码+运行结果:
class Solution {
public://用于检查一个字符是不是元音bool check(char& c){string Ch="aeiou";for(char e:Ch){if(e==c) return true;}return false;}int maxVowels(string s, int k) {int l=0;int r=l+k-1;int res=0;//计算初始窗口有多少个元音字母数for(int i=l;i<k;i++){if(check(s[i])) res++;}int temp=res;while(r<s.size()){//滑动窗口if(check(s[l++])) temp--;if(check(s[++r])) temp++;res=max(res,temp);if(res==k) return res; //若是有都是元音的窗口,那么也不用接着遍历了,不可能有比窗口长度还大的结果了}return res;}
};