首页 > 其他 > 详细

leetcode -- 3.无重复字符的最长子串

时间:2019-02-23 16:51:24      阅读:159      评论:0      收藏:0      [点我收藏+]

内容描述:给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。

class Solution(object):
    def lengthOfLongestSubstring(self, s):
        """
        :type s: str
        :rtype: int
        """
        #start为无重复子串开始位置的指针,maxlen为最大长度
        start = maxlen = 0
        
        #创建一个字典,key为遍历字符串s的元素,vale为其索引
        dic = {}
        
        #遍历字符串,判断该元素是否在字典中
        for i in range(len(s)):
            if s[i] in dic and start <= dic[s[i]]:
                #若在并且,无重复子串初始的位置小于已经在该字典中元素的索引,以该元素的下一个索引为start
                start = dic[s[i]] + 1
            else:#不在则说明还未重复,i-start+1为此处的索引减去无重复子串开始的位置start
                maxlen = max(maxlen, i-start+1)
            dic[s[i]]  = i
        return maxlen

 

leetcode -- 3.无重复字符的最长子串

原文:https://www.cnblogs.com/hengw/p/10423030.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!