b_nk_找到字符串的最长无重复字符子串(双指针+map)
给定一个数组arr,返回arr的最长无的重复子串的长度(无重复指的是所有数字都不相同)。
[2,2,3,4,3],返回3
思路:双指针,当一段子数组A[l,r]中出现过重复数字,那该子数组的长度不应该继续增长,而是通过消除重复再增长(即移动左边界)
class Solution:
def maxLength(self , A ):
n,l,r,ans=len(A),0,0,0
vis=[False]*(int(1e5+5))
while r<n:
if not vis[A[r]]:
vis[A[r]]=True
r+=1
else:
vis[A[l]]=False
l+=1
ans=max(ans, r-l)
return ans