1456 定长子串中元音的最大数目
题目要求:给定字符串s
和整数k
,返回字符串s
中长度为k
的单个子字符串中可能包含的最大元音字母数。
题目链接:https://leetcode.cn/problems/maximum-number-of-vowels-in-a-substring-of-given-length/
算法分析:滑动窗口的思想
构造窗口;初始化中间变量
sum
,统计窗口中元音的个数不断地增加
right
,如果是元音,sum++
当窗口超过指定大小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
}
最后更新于