题目链接
定长子串中元音的最大数目
题目描述
注意点
- s 由小写英文字母组成
- 返回字符串 s 中长度为 k 的单个子字符串中可能包含的最大元音字母数
- 1 <= k <= s.length
解答思路
- 根据滑动窗口的思想,维持一个大小为k的窗口,每次移动窗口时整体向右移动一步,移动时,判断最左侧元素是否是元音,同时判断新加入的元素是否是元音,更改子数组元音的数目,移动窗口的同时找到子串中元音的最大数目
代码
class Solution {
public int maxVowels(String s, int k) {
int sum = 0;
for (int i = 0; i < k; i++) {
sum += isVowel(s.charAt(i));
}
int res = sum;
for (int i = k; i < s.length(); i++) {
sum = sum - isVowel(s.charAt(i - k)) + isVowel(s.charAt(i));
res = Math.max(res, sum);
}
return res;
}
public int isVowel(char c) {
return c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u' ? 1 : 0;
}
}
关键点
- 滑动窗口的思想