例: 「abcabcabc」 最大長度為3 abc,
解題思路: 首先我們需要乙個start來記錄當前最長不包含字串的開始座標,
假設當從左往右遍歷到x的位置時, 0,1,2,3,4,5,6,7
此時我們要保證從start的座標到x的座標包不包含x,
也就是 從start 到 x-1的座標內有沒有包含x,
所以我們需要乙個map來在我們遍歷的時候幫我們記錄每乙個字元最後出現的位子在**,
格式為 「字元」:「最後出現的座標」
當遍歷到x時,我們在問map這個記錄,
此時會出現三種情況
第一種: x 從來沒有出現過
第二種: x出現在start之前
第三種: x 出現在start之後
出現第一種,第二種的時候我們不需要去理會,只要更新字元段長度即可,
出現第三種的時候 需要把 srart的座標指向到 map裡x座標+1的位置 才能繼續走下去
即:對於每乙個字元x last【x】不存在,或者小於start 無需操作
當last【x】>=start 更新 start
接下來是**實現
```
func maxlength(s string) int
if i-start +1 >maxlength
lastchar[ch] = i //記錄每個字元當前最後一次出現的座標
}return maxlength
尋找最長不含有重複字元的子串
變數 開始索引 map 字元 索引 最大長度 如果碰到map已經存在該字元的並且出現位置 開始索引,將map中記錄的位置的下乙個位置當做開始索引 如果當前不重複區間大於記錄最大長度儲存到最大長度 將當前遍歷到的字元索引儲存到map byte int中,byte存放字元 int存放索引 package...
不含有重複字元的 最長子串 的長度。
題目 給定乙個字串,請你找出其中不含有重複字元的最長子串的長度。class solution object def lengthoflongestsubstring self,s type s str rtype int 儲存歷史迴圈中最長的子串長度 max len 0 判斷傳入的字串是否為空 if...
不含有重複字元的最長子串的長度
示例 1 輸入 abcabcbb 輸出 3解釋 因為無重複字元的最長子串是 abc 所以其長度為 3。示例 2 輸入 bbbbb 輸出 1解釋 因為無重複字元的最長子串是 b 所以其長度為 1。示例 3 輸入 pwwkew 輸出 3解釋 因為無重複字元的最長子串是 wke 所以其長度為 3。請注意,...