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

无重复字符的最长子串

作者: 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