Leetcode題庫03 無重複字元的最長子串

2021-09-16 20:59:02 字數 1298 閱讀 7515

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

示例 1:

輸入: "abcabcbb"

輸出: 3

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

示例 2:

輸入: "bbbbb"

輸出: 1

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

示例 3:

輸入: "pwwkew"

輸出: 3

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

請注意,你的答案必須是 子串 的長度,"pwke" 是乙個子串行,不是子串。

這是一道還算簡單的題目,新手用來練手十分不錯,不需要其他資料結構等等的知識。

主要是考慮如何將可能的情況全部表明出來。

1.由於只需返回最長字元的長度,我們可以設定變數儲存最長陣列的長度。

2.關鍵是如何去尋找無重複的陣列和怎麼處理出現重複字元的情況。

首先我是建立乙個陣列變數temp儲存無重複陣列變數,這樣子方便最後判斷陣列長度。

2.1 處理沒有出現重複字元的情況很簡單,直接加入至列表temp即可。

2.2 當出現重複字元情況時,需要將temp陣列進行處理,將其變為無重複陣列。(這裡是解題的關 鍵,因為只有確定怎麼處理出現重複字元陣列的情況才能進行遍歷)

這裡用了比較巧妙的方法,由於題目限制,當你每次搜尋字元時,temp永遠是無重複陣列,當出現重複字元時,只需將temp**現當前重複字元的一段刪除即可。

整段**如下

class solution:

def lengthoflongestsubstring(self, s):

''':tppe s: string

:rtype: int

'''temp =

max_temp = 0

for item in s:

for position, item_1 in enumerate(temp): # 使用enumerate獲得當前字元的位置資訊

if item_1 == item:

temp = temp[position+1:] # 對陣列做切片處理

break

if max_temp <= len(temp):

max_temp = len(temp)

​       return max_temp

leetcode題庫 無重複字元的最長子串

給定乙個字串,找出不含有重複字元的最長子串的長度。輸入 abcabcbb 輸出 3解釋 無重複字元的最長子串是 abc 其長度為 3。輸入 bbbbb 輸出 1解釋 無重複字元的最長子串是 b 其長度為 1。輸入 pwwkew 輸出 3解釋 無重複字元的最長子串是 wke 其長度為 3。請注意,答案...

LeetCode 03 無重複字元的最長字串

從頭開始遍歷每乙個字元放入到hashmap中,然後依次掃瞄後續每乙個字元繼續放入到hashmap中,直到某一字元已經存在為止。得到以該字元開頭對應的最大無重複字串。迴圈得到無重複字元的最長字串 當然我肯定不會就此滿足,於是我在乙個精選中看到了四個字滑動視窗不錯,我的思想就是這個,但是 實現上稍微有點...

Leetcode 03 無重複字元的最長子串

中等題 給定乙個字串,請你找出其中不含有重複字元的最長子串的長度。自己在那兒想了半天,定義了left和right兩個指標,每次右邊界右移得到新的字元,檢查前面有沒有重複的,如果有就直接將左邊界移至重複字元後面乙個,因為每一步都確保了前面的字串沒有重複字元,因此只要考慮新加入的即可,邏輯上應該沒啥問題...