5417. Maximum Number of Vowels in a Substring of Given Length
Given a string s
and an integer k
.
Return the maximum number of vowel letters in any substring of s
with length k
.
Vowel letters in English are (a, e, i, o, u).
Example 1:
Input: s = "abciiidef", k = 3 Output: 3 Explanation: The substring "iii" contains 3 vowel letters.
Example 2:
Input: s = "aeiou", k = 2 Output: 2 Explanation: Any substring of length 2 contains 2 vowels.
Example 3:
Input: s = "leetcode", k = 3 Output: 2 Explanation: "lee", "eet" and "ode" contain 2 vowels.
Example 4:
Input: s = "rhythms", k = 4 Output: 0 Explanation: We can see that s doesn't have any vowel letters.
Example 5:
Input: s = "tryhard", k = 4 Output: 1
Constraints:
1 <= s.length <= 10^5
s
consists of lowercase English letters.1 <= k <= s.length
给定字符串s和长度k,问s中长度为k的子串中,包含最多元音字母的个数。
简单题,直接滑动窗口+双指针计数即可:
class Solution {
public:
bool IsVol(const char &c) {
return c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u';
}
int maxVowels(string s, int k) {
int ans = 0;
int i = 0, j = k - 1, n = s.size();
for (int k = i; k <= j; ++k) {
if (IsVol(s[k]))++ans;
}
int cur = ans;
while (j < n - 1) {
++j;
if (IsVol(s[j]))++cur;
if (IsVol(s[i]))--cur;
++i;
ans = max(ans, cur);
}
return ans;
}
};
本代码提交AC。