美文网首页
无重复字符的最长子串

无重复字符的最长子串

作者: Houtasu | 来源:发表于2018-07-30 17:38 被阅读0次

给定一个字符串,找出不含有重复字符的最长子串的长度。

示例:

给定 "abcabcbb" ,没有重复字符的最长子串是 "abc" ,那么长度就是3。

给定 "bbbbb" ,最长的子串就是 "b" ,长度是1。

给定 "pwwkew" ,最长子串是 "wke" ,长度是3。请注意答案必须是一个子串,"pwke" 是 子序列 而不是子串。
解题思路:
定义一个空列表,然后循环字符串s,每次循环获取一个字符,查看该字符是否在列表中,如果不在就添加进列表里。如果已经存在,就说明这个列表中存了一个字符子串了。计算该子串的长度,和最大值比较,更新最大值。然后留下列表中重复字符串后面的字符,往后循环到结尾。注意结尾还有算一次子串的长度和更新最大值。
代码如下:

def lengthOfLongestSubstring(self, s):
        sub = []
        max_length = 0
        for i in s:
            if i not in sub:
                sub.append(i)
            else:
                if max_length < len(sub):
                    max_length = len(sub)
                sub = sub[sub.index(i)+1:]
                sub.append(i)
        if max_length < len(sub):
            max_length = len(sub)
        return max_length

相关文章

网友评论

      本文标题:无重复字符的最长子串

      本文链接:https://www.haomeiwen.com/subject/guofvftx.html