力扣3 無重複字元的最長子串(滑動視窗 雙指標)

2021-10-07 09:42:37 字數 1094 閱讀 7833

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

示例 1:

輸入: "abcabcbb"

輸出: 3

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

示例 2:

輸入: "bbbbb"

輸出: 1

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

示例 3:

輸入: "pwwkew"

輸出: 3

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

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

既然是無重複字元,我們就可以讓乙個外迴圈控制最右側的邊界,內迴圈在這個範圍內從左到右來依次檢查是否出現重複字元。

重複字元的檢測用set即可。

時間複雜度o(n²),空間複雜度因為引入set,所以是o(n)。

class

solution

else

} start++;}

return maxlen;

}}

滑動視窗,先讓左指標指向0,右指標依次往右走,如果遇到了重複元素,就將視窗左側往右挪,挪到前面那個出現了重複的元素的右側。然後更新最大值,並且更新重複元素的下標。

注意:視窗只能往右去,不能往左回,所以視窗左側更改位置時要比較一下當前位置和發生重複的元素的位置。

我們用map來記錄每個字元出現的位置。

class

solution

//修改當前元素索引

map.

put(array[i]

,i);

//計算長度

maxlen = math.

max(maxlen, i-start+1)

;return maxlen;

}}

力扣3 無重複字元的最長子串

給定乙個字串,請你找出其中不含有重複字元的 最長子串 的長度。示例 1 輸入 abcabcbb 輸出 3 解釋 因為無重複字元的最長子串是 abc 所以其長度為 3。示例 2 輸入 bbbbb 輸出 1 解釋 因為無重複字元的最長子串是 b 所以其長度為 1。示例 3 輸入 pwwkew 輸出 3 ...

力扣 3 無重複字元的最長子串

3.無重複字元的最長子串 給定乙個字串,請你找出其中不含有重複字元的最長子串的長度。示例 1 輸入 abcabcbb 輸出 3解釋 因為無重複字元的最長子串是 abc 所以其長度為 3。示例 2 輸入 bbbbb 輸出 1解釋 因為無重複字元的最長子串是 b 所以其長度為 1。示例 3 輸入 pww...

力扣 無重複字元的最長子串

1.暴力解法 兩個for迴圈檢出所有子串,對於每乙個子串再分別用乙個函式判斷是否為重複子串,若為非重複子串,則計算出其長度,直至找到最大值。時間複雜度 o n3 每個子串的重複判斷需要 o j i 2.滑動視窗 初始值i j 0 j不斷向右滑動,只要該字串為非重複字串就不斷向右滑動,每次滑動記錄該不...