题目
给你字符串 s 和整数 k 。
请返回字符串 s 中长度为 k 的单个子字符串中可能包含的最大元音字母数。
英文中的 元音字母 为(a, e, i, o, u)。
链接
思考
这道题上面可以直接暴力法直接拆掉,但是时间复杂度非常的高,不建议,可以参考双指针对他进行判别,跟进一步使用窗口
class Solution {
public int maxVowels(String s, int k) {
int max = 0;
int cur = 0;
for (int i = 0;i < k;i++) {
if (isVowels(s.charAt(i))) {
cur ++;
}
}
max = cur;
for (int i = k;i < s.length();i ++) {
if (isVowels(s.charAt(i))) {
cur ++;
}
if (isVowels(s.charAt(i - k))) {
cur --;
}
if (cur == k) return k;
max = Math.max(max,cur);
}
return max;
}
private boolean isVowels(char s) {
return s == 'a' || s == 'e' || s == 'i' || s == 'o' || s == 'u';
}
}
