Maximum Number of Vowels in a Substring of Given Length

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).

 

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.

Example 4:

Input: s = "rhythms", k = 4
Output: 0
Explanation: We can see that s doesn't have any vowel letters.

Example 5:

Input: s = "tryhard", k = 4
Output: 1

 

Constraints:


Solution:

class Solution {
    public int maxVowels(String s, int k) {
        int left = 0, right = 0, n = s.length();
        Set<Character> v = new HashSet(Arrays.asList('a', 'e', 'i', 'o', 'u'));
        int count = 0, max = 0;
        while (right < n) {
            char in = s.charAt(right);
            if (v.contains(in)) {
                count ++;
            }
            if (right - left + 1 > k) {
                char out = s.charAt(left);
                if (v.contains(out)) {
                    count --;
                }
                left ++;
            }
            if (right - left + 1 == k) {
                max = Math.max(max, count);
            }
            right ++;
        }
        return max;
    }
}