**
給定乙個字串,請你找出其中不含有重複字元的 最長子串 的長度。
示例 1:
輸入: 「abcabcbb」
輸出: 3
解釋: 因為無重複字元的最長子串是 「abc」,所以其長度為 3。
示例 2:
輸入: 「bbbbb」
輸出: 1
解釋: 因為無重複字元的最長子串是 「b」,所以其長度為 1。
示例 3:
輸入: 「pwwkew」
輸出: 3
解釋: 因為無重複字元的最長子串是 「wke」,所以其長度為 3。
請注意,你的答案必須是 子串 的長度,「pwke」 是乙個子串行,不是子串。
思路:1.核心思想是「滑動視窗尋找」,考慮利用兩個指標來找到這個「滑動視窗」的左右邊界,因此在尋找邊界時,要考慮是否重複問題則需要將已出現的字元儲存,所有用到容器:集合,和集合的增刪操作與是否唯一操作(ss.count())。
2.邏輯:還是使用了巢狀迴圈,但時間複雜度並非 o(n2); 初始指標指空(-1),從字串頭開始遍歷,當找到乙個無重複字元時便將其插入到集合中,並把右指標後移(長度增加),在外層一次遍歷中找到第一次的最大乙個無重複子串,儲存此時的長度,此時右指標停在重複字元上,即開始移動左指標。
3.左指標移動時,刪除在集合中存在的當前字元元素(因為在找到重複字元前的所有字元均為無效字元),直到找重複字元並刪除後,便可以回到 2 繼續下一輪的迴圈找到新的無重複子串,並在找到後予以儲存其長度值,因此儲存時應該是儲存的與當前比較的較大值做為返回。(max()).
時間複雜度:o(n)
空間複雜度:o(∑)
至此,解決。
int lengthoflongestsubstring
(string s)
while
(p+1
!ss.
count
(s[p+1]
))ret =
max(ret,p-i+1)
;}}return ret;
respect!!! leetcode 求最長無重複子串
1.求最長無重複子串 給定乙個字串,找出不含有重複字元的最長子串的長度。示例 給定 abcabcbb 沒有重複字元的最長子串是 abc 那麼長度就是3。給定 bbbbb 最長的子串就是 b 長度是1。給定 pwwkew 最長子串是 wke 長度是3。請注意答案必須是乙個子串,pwke 是 子串行 而...
最長無重複子串
examples given abcabcbb the answer is abc which the length is 3.given bbbbb the answer is b with the length of 1.given pwwkew the answer is wke with t...
最長無重複子串
給定乙個字串,請找出其中無重複字元的最長子字串。例如,在 abcabcbb 中,最長無重複子串為 abc 其長度為3。在 pwwkew 最長無重複子串為 wke 其長度為3。注意是是子串,pwke 是子串行而不是子串。leetcode 首先試了試暴力搜尋,遍歷一次字串,遍歷過程中,對每個字元都有乙個...