340. Longest Substring with At Most K Distinct Characters - cocoder39/coco39_LC GitHub Wiki

340. Longest Substring with At Most K Distinct Characters

[left, right) is the window

class Solution:
    def lengthOfLongestSubstringKDistinct(self, s: str, k: int) -> int:
        counters = {}
        left, right = 0, 0
        res = 0
        while right < len(s):
            if len(counters) <= k:
                ch = s[right]
                if ch not in counters:
                    counters[ch] = 0
                counters[ch] += 1
                right += 1
            else:
                ch = s[left]
                counters[ch] -= 1
                if counters[ch] == 0:
                    del counters[ch]
                left += 1
            if len(counters) <= k:
                res = max(res, right - left)
        return res