1456. 定长子串中元音的最大数目
小于 1 分钟
1456. 定长子串中元音的最大数目中等
解题思路:
- 使用滑动窗口,先计算 下标 0.到 k(不包含k) 的元音字符数。让 left 指向 0,right 指向 k。
- 移动 left 和 right,更新 res
if(c[s.charAt(right++)] != 0){count++;} if(c[s.charAt(left++)] != 0 ){count--;} res = Math.max(count,res);
class Solution {
public int maxVowels(String s, int k) {
char[] c = new char[127];
c['a'] = 'a';c['e'] = 'e';c['i'] = 'i';c['o'] = 'o';c['u'] = 'u';
int res = 0;
int count = 0;
// k 大于 s的长度的情况
if(s.length() <= k){
for (int i = 0; i < s.length(); i++) {
if(c[s.charAt(i)] != 0){
res++;
}
}
return res;
}
// 先计算 0 - k 的元音字符数
for (int i = 0; i < k; i++) {
if(c[s.charAt(i)] != 0){
count++;
}
}
res = count;
int left = 0;
int right = k;
// 移动 left 和 right
while(right < s.length()){
if(c[s.charAt(right++)] != 0){count++;}
if(c[s.charAt(left++)] != 0 ){count--;}
res = Math.max(count,res);
}
return res;
}
}
Powered by Waline v2.15.5