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).
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.
Input: s = "rhythms", k = 4
Output: 0
Explanation: We can see that s doesn't have any vowel letters.
Input: s = "tryhard", k = 4
Output: 1
1 <= s.length <= 10^5
s
consists of lowercase English letters.1 <= k <= s.length
- mine
-
Java
Runtime: 7 ms, faster than 99.18%, Memory Usage: 40.2 MB, less than 100.00% of Java online submissions
//O(N)time O(1)space public int maxVowels(String s, int k) { int[] map = new int[26]; map['a' - 'a'] = 1; map['e' - 'a'] = 1; map['i' - 'a'] = 1; map['o' - 'a'] = 1; map['u' - 'a'] = 1; int res = 0; int len = s.length(); int temp = 0; for (int i = 0; i < len; i++) { if (i - k >= 0 && map[s.charAt(i - k) - 'a'] == 1){ temp--; } if (map[s.charAt(i) - 'a'] == 1){ temp++; } res = Math.max(res,temp); } return res; }
-