1. 程式人生 > >LeetCode陣列與字串-無重複字元的最長子串

LeetCode陣列與字串-無重複字元的最長子串

無重複字元的最長子串

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

示例 1:

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

示例 2:

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

示例 3:

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

Python: 思路: 1.定義 i 記錄 所有不重複元素組成 res 的最大長度 2.res 拼接所有不重複的char 字母 3.如果有重複的,找到重複字母char的 index,把char之後的字串 重新 賦值給 res、 res 再拼接上 char

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