假设我们有一个字符串s,我们必须找到包含最多2个不同字符的最长子字符串的长度。
因此,如果输入类似于s =“ xyzzy”,则输出将为4,因为“ yzzy”是最长的子字符串,最多包含2个唯一字符。
为了解决这个问题,我们将按照以下步骤操作:
开始:= 0
c:=映射
回答:= 0
对于范围从0到s的大小,请执行
c [s [start]]:= c [s [start]]-1
如果c [s [start]]为0,则
开始:=开始+ 1
删除c [s [start]]
c [s [end]]:= c [s [end]] + 1
当c> 2的大小时
ans:= ans和(end-start + 1)的最大值
返回ans
让我们看下面的实现以更好地理解-
class Solution: def solve(self, s): from collections import Counter start = 0 c = Counter() ans = 0 for end in range(len(s)): c[s[end]] += 1 while len(c) > 2: c[s[start]] -= 1 if not c[s[start]]: del c[s[start]] start += 1 ans = max(ans, end - start + 1) return ans ob = Solution()s = "xyzzy" print(ob.solve(s))
s = "xyzzy"
输出结果
4