line=input()
dc={}
i,res=0,1
for j,c in enumerate(line):
if c in dc:
i=max(dc[c]+1,i)
dc[c]=j
res=max(j-i+1,res)
print(res)
遍历所有右指针去寻找“包含右指针的最长字串”,通过双指针法得到
注意:需要正确更新i的状态(i应该增长并且正确更新)
务必要警惕“dc”的脏状态——可能包含<=i的出现次数;因此debug也重点关注这里(数据结构的脏状态/性质不满足容易产生奇怪的错误)

京公网安备 11010502036488号