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