3 無重複字元的最長子串

2021-09-23 13:35:23 字數 1604 閱讀 6064

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

示例 1:

輸入:"abcabcbb"輸出:3解釋:因為無重複字元的最長子串是"abc",所以其長度為 3。
示例 2:

輸入:"bbbbb"輸出:1解釋:因為無重複字元的最長子串是"b",所以其長度為 1。
示例 3:

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

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

思路:迴圈每個字元,查詢以當前字元開頭不重複的最長字串。

優化的點:1.若當前字元到結束位置的length<=maxresult,則退出迴圈

2.去掉第乙個重複的字元之前的字元,組成新的字串(減少一部分查詢)。比如字串是 「abcca」,查詢第乙個重複字元是「c」(charat(3),第二個「c」),則下乙個開始字串從「ca」開始,而不是從「bcca」開始。

class solution 

for (int j=0;jcharset = new hashset();

int maxlength = 0;

for (int i=0;i自己的理解:用乙個框卡住字串,要求框內字串滿足題目要求,框的長度就是無重複字串長度。如圖

實現的方案是用乙個left儲存當前滑動視窗的左邊界,

解法一是第一時間想到的,第二種是看了解答後理解的,差距還是蠻大的,學習了

平時一直使用ide,習慣了敲出「.」直接出提示,手敲**問題比較多,記錄下問題(標紅是出錯的點)

set list 增加用 add

set list查詢是否存在用contains

map增加用 put

map查詢用containskey

string 擷取是substring 包含開頭,不包含結尾

string charat 從0開始

3 無重複字元的最長子串

給定乙個字串,找出不含有重複字元的最長子串的長度。示例 給定 abcabcbb 沒有重複字元的最長子串是 abc 那麼長度就是3。給定 bbbbb 最長的子串就是 b 長度是1。給定 pwwkew 最長子串是 wke 長度是3。請注意答案必須是乙個子串,pwke 是 子串行 而不是子串。思路 用 i...

3 無重複字元的最長子串

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

3 無重複字元的最長子串

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