题目:原题链接(中等)
标签:字符串、滑动窗口
解法 | 时间复杂度 | 空间复杂度 | 执行用时 |
---|---|---|---|
Ans 1 (Python) | 108ms (99.89%) | ||
Ans 2 (Python) | |||
Ans 3 (Python) |
解法一(滑动窗口):
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UJ85rJds-1598616141351)(LeetCode题解(1456)]:截图.png)
class Solution:
def maxVowels(self, s: str, k: int) -> int:
# 处理字符串过短的情况
if len(s) <= k:
return s.count("a") + s.count("e") + s.count("i") + s.count("o") + s.count("u")
# 滑动窗口处理其他情况
ans = num = s[:k].count("a") + s[:k].count("e") + s[:k].count("i") + s[:k].count("o") + s[:k].count("u")
for i in range(len(s) - k):
if s[i] in {"a", "e", "i", "o", "u"}:
num -= 1
if s[i + k] in {"a", "e", "i", "o", "u"}:
num += 1
ans = max(num, ans)
return ans