领扣中等版--无重复字符的最长子串(Longest Substring Without Repeating Characters)

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

示例 1:

输入: "abcabcbb"
输出: 3 
解释: 无重复字符的最长子串是 "abc",其长度为 3。

示例 2:

输入: "bbbbb"
输出: 1
解释: 无重复字符的最长子串是 "b",其长度为 1。

示例 3:

输入: "pwwkew"
输出: 3
解释: 无重复字符的最长子串是 "wke",其长度为 3。
     请注意,答案必须是一个子串,"pwke" 是一个子序列 而不是子串。

Python3:

class Solution:
    def lengthOfLongestSubstring(self, s):
        """
        :type s: str
        :rtype: int
        """
        str_list = []
        tmp_list = []
        for i in s:
            if i in tmp_list:
                index = tmp_list.index(i)
                tmp_str = ''.join(tmp_list)
                if tmp_str not in str_list:
                    str_list.append(tmp_str)
                tmp_list = tmp_list[index+1:]
                tmp_list.append(i)

            else:
                tmp_list.append(i)
                if i == s[-1]:
                    tmp_str = ''.join(tmp_list)
                    str_list.append(tmp_str)
                
        max_length = 0
        for string in str_list:
            length = len(string)
            if length > max_length:
                max_length = length
        return max_length
    
    
solution = Solution()
# print(solution.lengthOfLongestSubstring('pwwkew'))
# print(solution.lengthOfLongestSubstring('bbbbbb'))
length = solution.lengthOfLongestSubstring("abcabcbb")
print(length)

  

posted @ 2018-09-05 10:28  看不清的自己  阅读(130)  评论(0)    收藏  举报