题目:
给你字符串 s
和整数 k
。
请返回字符串 s
中长度为 k
的单个子字符串中可能包含的最大元音字母数。
英文中的 元音字母 为(a
, e
, i
, o
, u
)。
思路:定长滑动窗口 入 更新 出
代码:
class Solution {public int maxVowels(String S, int k) {char[] s = S.toCharArray();int ans = 0;int vowel = 0;for (int i = 0; i < s.length; i++) {// 1. 进入窗口if (s[i] == 'a' || s[i] == 'e' || s[i] == 'i' || s[i] == 'o' || s[i] == 'u') {vowel++;}if (i < k - 1) { // 窗口大小不足 kcontinue;}// 2. 更新答案ans = Math.max(ans, vowel);// 3. 离开窗口char out = s[i - k + 1];if (out == 'a' || out == 'e' || out == 'i' || out == 'o' || out == 'u') {vowel--;}}return ans;}
}
性能:
时间复杂度o(n)
空间复杂度o(1)