LeetCode 75: 1456. Maximum Number of Vowels in a Substring of Given Length

김준수·2024년 2월 28일
0

LeetCode 75

목록 보기
15/63
post-custom-banner

[1456. Maximum Number of Vowels in a Substring of Given Length](1456. Maximum Number of Vowels in a Substring of Given Length)

Description

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' 입니다.

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.

Constraints:

  • 1 <= s.length <= 105
  • s 는 소문자로만 이루어져 있습니다.
  • 1 <= k <= s.length

Solution


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;
    }
}
post-custom-banner

0개의 댓글