題目連結 | 3298. 統計重新排列後包含另一個字串的子字串數目 II |
---|---|
思路 | 滑動視窗 |
題解連結 | O(n) 滑動視窗求個數(Python/Java/C++/Go) |
關鍵點 | 1. LeetCode-76版本的升級題 2. 內迴圈中如何統計數量 |
時間複雜度 | \(O(n+|\Sigma|)\) |
空間複雜度 | \(O(|\Sigma|)\) |
程式碼實現:
class Solution:
def validSubstringCount(self, s: str, t: str) -> int:
if len(s) < len(t):
return 0
cnt = defaultdict(int)
for ch in t:
cnt[ch] += 1
less = len(cnt)
answer = 0
left = 0
for ch in s:
cnt[ch] -= 1
if cnt[ch] == 0:
less -= 1
while less == 0:
if cnt[s[left]] == 0:
less += 1
cnt[s[left]] += 1
left += 1
answer += left
return answer