题解 | #最长不含重复字符的子字符串#

最长不含重复字符的子字符串

http://www.nowcoder.com/practice/48d2ff79b8564c40a50fa79f9d5fa9c7

双指针

class Solution:
    def lengthOfLongestSubstring(self , s: str) -> int:
            dic = {} #建立一个字典,用来对付重复元素
            i = -1 #左指针i,设成负一,如果后面一开始就是最长不重复子字符串的开始的话,直接减i就能求出长度
            res = 0
            for j in range(len(s)):
                if s[j] in dic: 
                    i = max(dic[s[j]],i) # 如果碰到重复了,就要更新左指针i,这里需要比大小是因为可能重复字符可能在i前面,这种情况i是不需要动的
                dic[s[j]] = j #右指针j不断更新
                res = max(res,j-i)
            return res
全部评论

相关推荐

01-21 12:26
暨南大学 golang
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务