天天看點

Leetcode 3:無重複字元的最長子串

給定一個字元串,找出不含有重複字元的最長子串的長度。

示例:

給定 “abcabcbb” ,沒有重複字元的最長子串是 “abc” ,那麼長度就是3。

給定 “bbbbb” ,最長的子串就是 “b” ,長度是1。

給定 “pwwkew” ,最長子串是 “wke” ,長度是3。請注意答案必須是一個子串,“pwke” 是 子序列 而不是子串。

解題思路

先周遊整個字元串,然後對周遊到的每個字元後的字元檢查是否有重複元素,我們通過建立一個空的字元串,如果檢查的字元在這個空的字元串中沒有的話,我們将他加入這個空字元串中,并且記錄這個空字元串的長度。

class Solution:
    def lengthOfLongestSubstring(self, s):
        """
        :type s: str
        :rtype: int
        """
        maxLength = 0
        for i,enum in enumerate(s):   
            count = 0
            usedChar = str()
            for j in s[i:]: 
                if j not in usedChar:
                    usedChar += j
                    count += 1
                    if maxLength < count: 
                        maxLength = count
                else:                   
                    break
        return maxLength