給定乙個字串,請你找出其中不含有重複字元的最長子串的長度。
示例 1:
輸入: "abcabcbb"示例 2:輸出: 3
解釋: 因為無重複字元的最長子串是 "abc",所以其長度為 3。
輸入: "bbbbb"示例 3:輸出: 1
解釋: 因為無重複字元的最長子串是 "b",所以其長度為 1。
輸入: "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兩個指標,每次右邊界右移得到新的字元,檢查前面有沒有重複的,如果有就直接將左邊界移至重複字元後面乙個,因為每一步都確保了前面的字串沒有重複字元,因此只要考慮新加入的即可,邏輯上應該沒啥問題...