给定一个字符串 s ,找出 至多 包含 k 个不同字符的最长子串 T。
示例 1:
输入: s = "eceba", k = 2
输出: 3
解释:
T 为 "ece",所以长度为 3。
示例 2:
输入: s = "aa", k = 1
输出: 2
解释:
T 为 "aa",所以长度为 2。
作者:珺王不早朝
链接:www.jianshu.com/p/3ac755876…
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
`
class Solution:
def lengthOfLongestSubstringKDistinct(self, s, k):
n = len(s)
left, right = 0, 0
ret = 0
counter = collections.Counter()
while right < n:
counter[s[right]] += 1
while len(counter) > k:
counter[s[left]] -= 1
if counter[s[left]] == 0:
del counter[s[left]]
left += 1
right += 1
ret = max(ret, right-left)
return ret
a = Solution()
test = 'ababacdf'
print(a.lengthOfLongestSubstringKDistinct(test, 2))
`