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', and '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.
Constraints:
1 <= s.length <= 105
s consists of lowercase English letters.
1 <= k <= s.length
Solutions
Solution 1: Sliding Window
First, we count the number of vowels in the first \(k\) characters, denoted as \(cnt\), and initialize the answer \(ans\) as \(cnt\).
Then we start traversing the string from \(k\). For each iteration, we add the current character to the window. If the current character is a vowel, we increment \(cnt\). We remove the first character from the window. If the removed character is a vowel, we decrement \(cnt\). Then, we update the answer \(ans = \max(ans, cnt)\).
After the traversal, we return the answer.
The time complexity is \(O(n)\), where \(n\) is the length of the string \(s\). The space complexity is \(O(1)\).