题目:给你字符串 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; }
}