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也重点关注这里(数据结构的脏状态/性质不满足容易产生奇怪的错误)