---
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
```