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'.
문자열과 s
와 정수 k
가 주어지면, 문자열 s
에서 k
길이의 부분 문자열들 중 최대모음문자수를 반환합니다.
영어의 모음 문자는 '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.
s
는 소문자로만 이루어져 있습니다.
class Solution {
public int maxVowels(String s, int k) {
char[] vowels = { 'a', 'e', 'i', 'o', 'u' };
boolean[] vowelMap = new boolean[s.length()];
for (int i = 0; i < s.length(); i++) {
for (char vowel : vowels) {
if (s.charAt(i) == vowel) {
vowelMap[i] = true;
break;
}
}
}
int maxVowels = 0;
int cntVowels = 0;
for (int i = 0; i < s.length(); i++) {
if (i >= k && vowelMap[i - k]) {
cntVowels--;
}
if (vowelMap[i]) {
cntVowels++;
}
maxVowels = Math.max(maxVowels, cntVowels);
}
return maxVowels;
}
}