1456. 定長子串中元音的最大數目 - 力扣(LeetCode)
可以使用 滑動窗口 方法來解決這個問題。步驟如下:
- 初始化:計算前
k
個字符中元音字母的個數,作為初始窗口的值。 - 滑動窗口:遍歷字符串,每次右移窗口,刪除窗口左端字符,添加窗口右端字符,同時更新元音字母的計數。
- 維護最大元音計數:在滑動過程中,記錄最大值。
Python 代碼
def maxVowels(s, k):vowels = {'a', 'e', 'i', 'o', 'u'} # 使用集合加速查找count = max_count = sum(1 for c in s[:k] if c in vowels) # 計算初始窗口的元音數量for i in range(k, len(s)):count += (s[i] in vowels) - (s[i - k] in vowels) # 右移窗口,更新元音計數max_count = max(max_count, count) # 記錄最大元音計數return max_count
示例
s = "abciiidef"
k = 3
print(maxVowels(s, k)) # 輸出 3
復雜度分析
- 時間復雜度:O(n),其中
n
是字符串長度,我們遍歷s
一次。 - 空間復雜度:O(1),只使用了幾個變量,額外空間消耗極小。