1456 定长子串中元音的最大数目

题目要求:给定字符串s和整数k,返回字符串s中长度为k的单个子字符串中可能包含的最大元音字母数。

题目链接:https://leetcode.cn/problems/maximum-number-of-vowels-in-a-substring-of-given-length/

算法分析:滑动窗口的思想

  1. 构造窗口;初始化中间变量 sum ,统计窗口中元音的个数

  2. 不断地增加 right ,如果是元音,sum++

  3. 当窗口超过指定大小k时,不断地增加 left ,如果移除的 left 是元音,sum--

// date 2022/09/29
func maxVowels(s string, k int) int {
    left, right := 0, 0
    sum, ans := 0, 0
    // 构造窗口
    for right < len(s) {
        // 不断地增加right
        if isY(s[right]) {
            sum += 1
        }
        right++
        // 当窗口超过k大小时,增加left
        for right - left > k {
            if isY(s[left]) {
                sum -= 1
            }
            left++
        }
        if sum > ans {
            ans = sum
        }
    }
    return ans
}

func isY(a uint8) bool {
    s := []uint8{'a', 'e', 'i', 'o', 'u'}
    for _, v := range s {
        if a == v {
            return true
        }
    }
    return false
}

最后更新于