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
posted @ 2020-12-01 14:07  童年の波鞋  阅读(219)  评论(0编辑  收藏  举报