题目:给你字符串 s 和整数 k 。
请返回字符串 s 中长度为 k 的单个子字符串中可能包含的最大元音字母数。
英文中的 元音字母 为(a, e, i, o, u)。
解题思路:
1.右侧新进入窗口的字母为元音字母,左侧移出窗口的字母也是元音字母,这样一进一出抵消了。
2.右侧新进入窗口的字母为元音字母,左侧移出窗口的字母非元音字母,此时元音字母个数+1
3.右侧新进入窗口的字母非元音字母,左侧移出窗口的字母为元音字母,此时元音字母个数-1
class Solution{
public int maxVowels(String s,int k){
int n=s.length();
int vowel_count=0;
for(int i=0;i<k;++i){
vowel_count+= isVowel(s.charAt(i));
}
int ans=vowel_count;
for(int i=k;i<n;++i){
vowel_count +=isVowel(s.charAt(i))-isVowel(s.charAt(i-k));
ans=Math.max(ans,vowel_count);
}
return ans;
}
public int isVowel(char ch){
return ch=='a'|| ch=='e' || ch=='i' ||ch=='o' || ch=='u' ?1:0;
}
}