尋找最長不含有重複字串的長度

2021-09-11 18:22:41 字數 734 閱讀 5729

例: 「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。請注意,...