3298. 統計重新排列後包含另一個字串的子字串數目 II

WrRan發表於2024-09-24
題目連結 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

相關文章