LeetCode 無重複字元的最長子串

2021-09-13 02:45:56 字數 1362 閱讀 6287

題目描述:

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

示例 1:

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

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

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

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

想法:遍歷給定的字串,同時用佇列(或陣列)記錄下已經被遍歷的字元,用maxlen記錄當前最長子字串,用count計數,每一次遍歷都去佇列(或陣列)中檢查當前字元在之前是否有被遍歷過,若沒有被遍歷過,則將該字元新增到佇列(或陣列)中,且count加1;若已經被遍歷過,則需要將該字元之前(包括該字元)從佇列(或陣列)中移除。(例如:字串為 -->> "adseb

sck",當遍歷到字串中的第二個's'時,佇列中已經記錄的字元有:,則此時應將第乙個's'以及其之前的字元(紅色字元)刪除,每刪除乙個字元count要減1)。

(上面描述的可能比較亂,無奈語文水平有限╮(╯▽╰)╭    。。。)

因此有兩種方式可以實現,但原理都是一樣的,只是分別用佇列和陣列實現罷了。

1、用佇列實現:

class solution 

//未被遍歷,count++

}else

//將當前遍歷的字元新增到佇列中

queue.add(s.charat(i));

maxlen = (maxlen > count) ? maxlen : count;

}return maxlen;

}}

2、用陣列實現:

class solution 

}count++;

list.add(s.charat(i));

maxlen = (maxlen > count) ? maxlen : count;

}return maxlen;

}}

最後,各位路過的大佬看到若有更優的解答,歡迎指導,謝謝哦!

LeetCode第3題題解 無重複字元的最長子串

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

LeetCode刷題實戰3 無重複字元的最長子串

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

leetcode刷題之路3 無重複字元的最長子串

給定乙個字串,請你找出其中不含有重複字元的 最長子串 的長度。示例 1 輸入 abcabcbb 輸出 3 解釋 因為無重複字元的最長子串是 abc 所以其長度為 3。字元陣列和字串的區別,c語言字元陣列和字串區別詳解 開始的想法是在對字元陣列設定兩個指標,初始化乙個在位置0乙個在位置1,ans初始化...