leetcode 3 最長無重複字串

2021-09-25 08:43:46 字數 1731 閱讀 2419

3. longest substring without repeating characters

題面

given a string, find the length of the longest substring without repeating characters.

給定字串,找到最長無重複字串的長度

樣例

example 1:

input: "abcabcbb"

output: 3

explanation: the answer is"abc", with the length of 3.

example 2:

input: "bbbbb"

output: 1

explanation: the answer is"b", with the length of 1.

example 3:

input: "pwwkew"

output: 3

explanation: the answer is"wke", with the length of 3.

note that the answer must be a substring,"pwke"is a subsequence and not a substring.

思路

開始的思路是,蠢笨的滑動視窗

1.遍歷字串

2.以每個字串為基準,向後搜尋,暫存不重複的字元,遇到重複字元,結束內迴圈,統計不重複字元個數,更新結果。

時間複雜度:o(n3)

空間複雜度:> o(n)

1

class

solution

17if(tmpstr.length() >res)

18 res =tmpstr.length();19}

20return

res;21}

22 //搜尋元素是否存在(已經記錄過)

23bool find(string str, char

c)24

30 };

優化?改進搜尋複雜度

使用string find(char c)函式來替換我自己實現的find()函式,果然快了好多。

時間複雜度:大於o(n2) 小於 o(n3)

1

class

solution

17if(tmpstr.length() >res)

18 res =tmpstr.length();19}

20return

res;21}

22 };

當我使用unordered_map來儲存元素後,發現用時和空間沒有繼續減小,反而增大了許多,幾乎與最開始採用的方法一致了。比較奇怪!

那麼有沒有辦法消除一層迴圈呢?

待續......

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

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

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

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

LeetCode3 無重複字元的最長子串

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