1. 程式人生 > 實用技巧 >leetcode刷題筆記,無重複字元的最長子串題解

leetcode刷題筆記,無重複字元的最長子串題解

無重複字元的最長子串題目

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

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

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

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

來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/longest-substring-without-repeating-characters
著作權歸領釦網路所有。商業轉載請聯絡官方授權,非商業轉載請註明出處。

無重複字元的最長子串題目題解

提交時的程式碼↓

class Solution:
    def lengthOfLongestSubstring(self, s: str) -> int:
        str_list = []
        str_list2 = []
        len_max = 0
        str_len = 0
        for i in s:
            str_list.append(i) # 將字串分割為列表,儲存在str_list
        for i in range(0, len(str_list)):
            for n in range(0, len(str_list)-i):
                if str_list[i + n] not in str_list2:
                    str_list2.append(str_list[i + n]) # 將str_list中的元素放進str_list2中
                    str_len = len(str_list2)
                else:
                    len_max = max(len_max, str_len)
                    str_len = 0
                    str_list2.clear() # 如果重複,清空str_list2
                    break
        return max(len_max, str_len)

結果

執行用時我記得超過了5.01%的人,記憶體消耗是30%的人