無重複字元最長子串

2021-09-02 15:30:29 字數 985 閱讀 4129

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

示例 1:

輸入: 「abcabcbb」

輸出: 3

解釋: 因為無重複字元的最長子串是 「abc」,所以其長度為 3。

示例 2:

輸入: 「bbbbb」

輸出: 1

解釋: 因為無重複字元的最長子串是 「b」,所以其長度為 1。

示例 3:

輸入: 「pwwkew」

輸出: 3

解釋: 因為無重複字元的最長子串是 「wke」,所以其長度為 3。

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

當然暴力求解法是可以的,對這個字串的首尾都進行遍歷,並且判斷每個子串是否無重複,此時的時間複雜度為o(n^3),提交後超出時間限制,所以要進行優化,

class solution 

return true;

} };

對字串首尾進行遍歷時,遇到子串重複時,則進行下乙個子串的檢測,這時對下乙個子串的選取就很重要了,去除一些冗餘的選擇,可以提高我們的執行速度。

比如我們的頭部遍歷到i、尾部遍歷到j時,發現它不是無重複字串,換句話說就是第j個字元和前面i~j的字元裡的某個重複了,那此時,將頭部索引+1即變成i+1,是多餘的,因為這個重複的字元在i-j之間,只要不是i,那此時的字串依舊是重複的。

所以我們選取下乙個待檢查的字串可選擇i等於和j重複的那個字元的位置的後乙個,j從當前j開始,不用從i+1開始重新遍歷

對子串檢查是否重複可利用map,構建雜湊表,提高搜尋速度

class solution 

mapmap1;

while (isecond < i))

else 

return maxlen;

}};

無重複字元最長子串

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

無重複字元的最長子串

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

無重複字元的最長子串

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