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’.
?
Input: s = “abciiidef”, k = 3
Output: 3
Explanation: The substring “iii” contains 3 vowel letters.
Input: s = “aeiou”, k = 2
Output: 2
Explanation: Any substring of length 2 contains 2 vowels.
Input: s = “leetcode”, k = 3
Output: 2
Explanation: “lee”, “eet” and “ode” contain 2 vowels.
From: LeetCode
Link: 1456. Maximum Number of Vowels in a Substring of Given Length
// Helper function to check if a character is a vowel
bool isVowel(char c) {
return c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u';
}
int maxVowels(char *s, int k) {
int maxVowelCount = 0, currentVowelCount = 0;
// Initial count of vowels in the first window
for (int i = 0; i < k; ++i) {
if (isVowel(s[i])) {
currentVowelCount++;
}
}
maxVowelCount = currentVowelCount;
// Slide the window and update counts
for (int i = k; s[i] != '\0'; ++i) {
if (isVowel(s[i])) {
currentVowelCount++;
}
if (isVowel(s[i - k])) {
currentVowelCount--;
}
if (currentVowelCount > maxVowelCount) {
maxVowelCount = currentVowelCount;
}
}
return maxVowelCount;
}