Python程序:查找包含两个不同元素的最长子字符串
假设我们有一个字符串 s,我们需要找到包含最多两个不同字符的最长子字符串的长度。
因此,如果输入类似于 s = "xyzzy",则输出将为 4,因为 "yzzy" 是包含最多 2 个唯一字符的最长子字符串。
为了解决这个问题,我们将遵循以下步骤:
start := 0
c := 一个映射
ans := 0
对于 end 从 0 到 s 的大小,执行:
c[s[end]] := c[s[end]] + 1
当 c 的大小 > 2 时,执行:
c[s[start]] := c[s[start]] - 1
如果 c[s[start]] 为 0,则:
删除 c[s[start]]
start := start + 1
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
广告