0


Python | Leetcode Python题解之第395题至少有K个重复字符的最长子串

题目:

题解:

class Solution:
    def longestSubstring(self, s1: str, k: int) -> int:
        if k == 1: return len(s1)
        n = len(s1)
        res = 0
        for c in range(1, len(set(s1)) + 1):
            # 滑窗中字母种类个数恰好为 c
            freq = Counter()
            l = cnt = tcnt = 0    
            for r, ch in enumerate(s1):
                if freq[ch] == 0:
                    cnt += 1
                    tcnt += 1
                if freq[ch] == k - 1:
                    cnt -= 1
                freq[ch] += 1
                
                while tcnt > c:
                    lch = s1[l]
                    if freq[lch] == k: 
                        cnt += 1
                    if freq[lch] == 1:
                        tcnt -= 1
                        cnt -= 1
                    freq[lch] -= 1
                    l += 1
                if tcnt == c and cnt == 0:
                    res = max(res, r - l + 1)
        return res 
标签: Python Leetcode 题解

本文转载自: https://blog.csdn.net/Mopes__/article/details/142073706
版权归原作者 Mopes__ 所有, 如有侵权,请联系我们删除。

“Python | Leetcode Python题解之第395题至少有K个重复字符的最长子串”的评论:

还没有评论