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)
1class
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)
1class
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 是 子串行 而不是子串。採用最直接的...