Leetcode-至多包含两个不同字符的最长子串(滑动窗口)

56 阅读1分钟

模板解法

class Solution:
    def lengthOfLongestSubstringTwoDistinct(self, s):
        n = len(s)
        hashTable = {}
        max_len = 0
        start = 0
        for end in range(n):
            hashTable[s[end]] = hashTable.get(s[end], 0) + 1
            if len(hashTable) <= 2
                max_len = max(max_len, end - start + 1)
            while len(hashTable) > 2:
                head = s[start]
                hashTable[head] -= 1
                if hashTable[head] == 1:
                    del hashTable[head]
                start += 1
        return max_len
                

测试

sol = Solution()
s = "aabbbccdass"
result = sol.lengthOfLongestSubstringTwoDistinct(s)
print(result)

Visualization