The Maximum Number of Vowels in a Substring of Given Length problem from LeetCode 75 is a common coding interview question that tests your understanding of sliding window techniques, string traversal and efficient counting.

The task is to find the maximum number of vowels in any substring of a given length k
in a string s
. This problem emphasizes efficient window-based processing instead of recalculating counts for each substring which is crucial for large strings.
Table of Contents
In this post, we’ll walk through a clean Python solution, explain it step by step and discuss its relevance in interviews and real-world scenarios.
Problem Statement
Given a string s
and an integer k
, find the maximum number of vowels in any substring of length k
.
Vowels are 'a'
, 'e'
, 'i'
, 'o'
, 'u'
.
Understanding the Problem
A substring of length k is any contiguous sequence of k
characters in the string.
Instead of checking every possible substring (which would be inefficient), we use the sliding window technique to maintain a running count of vowels as the window moves across the string.
Examples
Example 1:
Input: s = "abciiidef", k = 3
Output: 3
Explanation: The substring "iii" contains 3 vowels.
Example 2:
Input: s = "leetcode", k = 2
Output: 2
Explanation: The substring "ee" contains 2 vowels.
Python Solution – Step-by-Step Explanation
Here’s a clean and efficient Python solution using a sliding window approach:
class Solution:
def maxVowels(self, s: str, k: int) -> int:
vowels = set(['a','e','i','o','u'])
max_vowels = 0
current_vowels = 0
# Count vowels in the initial window of size k
for i in range(k):
if s[i] in vowels:
current_vowels += 1
max_vowels = current_vowels
# Slide the window and update the count of vowels
for i in range(k, len(s)):
if s[i-k] in vowels:
current_vowels -= 1
if s[i] in vowels:
current_vowels += 1
max_vowels = max(max_vowels, current_vowels)
return max_vowels
Step 1: Initialize the Vowels Set and Counters
vowels = set(['a','e','i','o','u'])
max_vowels = 0
current_vowels = 0
vowels
helps in O(1) vowel lookups.current_vowels
tracks vowels in the current window.max_vowels
stores the maximum found so far.
Step 2: Count Vowels in the Initial Window
for i in range(k):
if s[i] in vowels:
current_vowels += 1
max_vowels = current_vowels
- Count vowels in the first
k
characters. - Initialize
max_vowels
with this count.
Step 3: Slide the Window Across the String
for i in range(k, len(s)):
if s[i-k] in vowels:
current_vowels -= 1
if s[i] in vowels:
current_vowels += 1
- Remove the vowel leaving the window (
s[i-k]
). - Add the vowel entering the window (
s[i]
). - This avoids recomputing the count for each substring.
Step 4: Update Maximum Vowel Count
max_vowels = max(max_vowels, current_vowels)
- After updating the count, compare it with
max_vowels
and store the maximum.
Step 5: Return the Result
return max_vowels
max_vowels
now contains the highest number of vowels in any substring of lengthk
.
Why This Solution Works
- Sliding window ensures each character is checked only once.
- Efficiently updates the vowel count without recomputation.
- Handles both lowercase vowels and large strings optimally.
Time and Space Complexity
Metric | Value |
---|---|
Time Complexity | O(n) – traverse the string once |
Space Complexity | O(1) – only counters and a set of vowels |
Edge Cases to Consider
Case | Output | Explanation |
---|---|---|
s = “aaaaa”, k = 2 | 2 | All characters are vowels |
s = “bcdfg”, k = 3 | 0 | No vowels in the substring |
s = “”, k = 1 | 0 | Empty string |
k > len(s) | 0 | Window size larger than string |
Real-World Applications
- Text analysis: Determine regions with high vowel density in words or sentences.
- Linguistics: Study vowel distribution in language processing.
- Substring optimization: Useful in problems involving specific character constraints.
- Interview preparation: Demonstrates sliding window mastery.
Conclusion
The Maximum Number of Vowels in a Substring of Given Length problem is a classic example of sliding window optimization. By maintaining a running count and updating it as the window slides, we achieve linear time complexity and constant space usage.
Mastering this problem strengthens your skills in efficient string processing and window-based algorithms which are widely applicable in coding interviews and real-world scenarios.
Related Reads
- Mastering the Container With Most Water Problem in Python – LeetCode 75 Explained
- Mastering the Max Number of K-Sum Pairs Problem in Python – LeetCode 75 Explained
- SciPy Cheatsheet: The Ultimate Quick Reference Guide for Python Scientific Computing
- PyTorch Cheatsheet: The Ultimate Quick Reference for Beginners and Developers
- The Ultimate TensorFlow Cheatsheet: From Basics to Advanced
External Links
LeetCode Problem Page – Maximum Number of Vowels in a Substring
2 thoughts on “Mastering the Maximum Number of Vowels in a Substring Problem in Python – LeetCode 75 Explained”