3 無重複字元的最長子串(滑動視窗解法)

2021-10-22 01:53:12 字數 957 閱讀 9395

無重複字元的最長子串

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

示例 1:

輸入: s = 「abcabcbb」

輸出: 3

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

示例 2:

輸入: s = 「bbbbb」

輸出: 1

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

示例 3:

輸入: s = 「pwwkew」

輸出: 3

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

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

示例 4:

輸入: s = 「」

輸出: 0

0 <= s.length <= 5 * 104

s 由英文本母、數字、符號和空格組成

解題思路

滑動視窗

思路:子串是連續的,所以首先想到滑動視窗。視窗向右滑動,遇到了重複元素就需要把視窗中的重複元素及以前的元素都刪掉。

做法:用兩個指標代表視窗兩端。右指標一直向右移動,到頭時結束。每移動一格元素判斷是否有重複的,把重複元素及以前的元素都刪掉,需要用到map,可以判斷是否有重複元素,以及記錄元素位置。每次成功新增元素後記錄當前長度。

時間複雜度:o(n),雖然中間有乙個把map中重複及以前的元素刪除的遍歷,但是map中的元素是字串的元素依次新增的。相當於兩個遍歷同時進行。兩個指標向右移動。所以時間複雜度依然是:o(n),空間複雜度:o(n)

**

class

solution

else

}return maxlength;

}}

3 無重複字元的最長子串(滑動視窗)

3.無重複字元的最長子串 給定乙個字串,請你找出其中不含有重複字元的最長子串的長度。示例 3 輸入 pwwkew 輸出 3 解釋 因為無重複字元的最長子串是 wke 所以其長度為 3。請注意,你的答案必須是 子串 的長度,pwke 是乙個子串行,不是子串。思路 如果遍歷所有子串並檢查子串中字元是否重...

無重複字元的最長子串(滑動視窗)

給定乙個字串,請你找出其中不含有重複字元的 最長子串 的長度。示例 1 輸入 abcabcbb 輸出 3 解釋 因為無重複字元的最長子串是 abc 所以其長度為 3。我們可以定義字元到索引的對映,而不是使用集合來判斷乙個字元是否存在。當我們找到重複的字元時,我們可以立即跳過該視窗。也就是說,如果 s...

無重複字元的最長子串(滑動視窗)

給定乙個字串,請你找出其中不含有重複字元的 最長子串 的長度。輸入 abcabcbb 輸出 3 解釋 因為無重複字元的最長子串是 abc 所以其長度為 3。使用list的情況下可以儲存最長的字串什麼樣子,但是這道題不需要返回最長字串,所以list不好 class solution else retu...