定长子串中元音的最大数目
滑动窗口固定
1、维护一个长度为k的滑窗,首先找到第一个窗口,统计里面的元音个数count。
2、设置l=0,r=0,当第一个窗口找到遍历完毕,r的值也确定了
3、窗口向右滑动,每次滑动+1,;由于每次前进1,每次移动都会新加一个字母和减少一个字母,判断这两个字母是否为元音:
- 新加入的字符是元音,count++。
- 被移出的字符是元音,count--。
4、每次移动比较result是否为最大,如不是则替换;最后返回
class Solution {
public int maxVowels(String s, int k) {
int l=0;
int r=0;
int result=0;
int count=0;
char[] arr=new char[s.length()];
for(int i=0;i<s.length();i++){
arr[i]=s.charAt(i);
}
while(r<k){
if(arr[r]=='a'||arr[r]=='e'||arr[r]=='i'||arr[r]=='o'||arr[r]=='u'){
count++;
}
r++;
result=count;
}
for(;r<s.length();++l,++r){
if(arr[r]=='a'||arr[r]=='e'||arr[r]=='i'||arr[r]=='o'||arr[r]=='u'){
count++;
}
if(arr[l]=='a'||arr[l]=='e'||arr[l]=='i'||arr[l]=='o'||arr[l]=='u'){
count--;
}
if(result<count){
result=count;
}
}
return result;
}
}