--- tags: data_structure_python --- # 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` # Solution ```python= class Solution: def maxVowels(self, s: str, k: int) -> int: # Time complexity: O(n). # Space complexity: O(5) ~= O(1). m, beg, end = len(s), 0, 0 vowels = set(['a', 'e', 'i', 'o', 'u']) maxi, count = 0, 0 while end < m: if s[end] in vowels: count += 1 if end-beg+1 >= k: maxi = max(maxi, count) if s[beg] in vowels: count -= 1 beg += 1 end += 1 return maxi ```