1. 程式人生 > >打卡LeetCode第三天——無重複字元的最長子串

打卡LeetCode第三天——無重複字元的最長子串

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

示例 1:

輸入: "abcabcbb"
輸出: 3 
解釋: 無重複字元的最長子串是 "abc",其長度為 3。

示例 2:

輸入: "bbbbb"
輸出: 1
解釋: 無重複字元的最長子串是 "b",其長度為 1。

示例 3:

輸入: "pwwkew"
輸出: 3
解釋: 無重複字元的最長子串是 "wke",其長度為 3。
     請注意,答案必須是一個子串"pwke"是一個子序列 而不是子串。

思路:遇到重複字元就重新開始統計字串,將原來的最長長度記錄下來,遇到下一個字元就重新統計長度與之前的最長長度進行比較。

【python程式碼】

class Solution(object):
    def lengthOfLongestSubstring(self, s):
        """
        :type s: str
        :rtype: int
        """
        mcount=0
        count=0
        s1=[]
        for i in s:
            if i not in s1:
                s1.append(i)
                count+=1
                if count>=mcount:
                    mcount=count
            else:
                s1=s1[s1.index(i)+1:]
                s1.append(i)
                count=len(s1)
                if count>=mcount:
                    mcount=count
                                
        return mcount