Skip to content

Latest commit

 

History

History
85 lines (66 loc) · 1.75 KB

1456. Maximum Number of Vowels in a Substring of Given Length.md

File metadata and controls

85 lines (66 loc) · 1.75 KB

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:

  • 1 <= s.length <= 10^5
  • s consists of lowercase English letters.
  • 1 <= k <= s.length

Solution

  • 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;
      }