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

2021-10-02 15:42:20 字數 939 閱讀 6554

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

示例 1:

輸入: "abcabcbb"

輸出: 3 

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

示例 2:

輸入: "bbbbb"

輸出: 1

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

示例 3:

輸入: "pwwkew"

輸出: 3

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

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

【思路】

假設有乙個桶,放在桶內的所有字元互不重複。每次放入乙個字元a,在放入後,判斷已有字元中是否和放入的字元a重複,如果有第m個放入的字元與a重複,必定要去掉比m先放入的所有字元。因為子串是連續的。此時,桶內第m+1個字元一直到放入a後的字元都是不重複的。用k來記錄桶內最早放入的字元,j-1表示最後放入的字元,j是當前要放入的字元。

尋找[k,j]中且含第j個字元的非重複子串(對於前j個字元,每次尋找包含j的不重複子串,考慮從j往前尋找最長非重複子串)。如果知道了從k個字元起[k,j-1]中沒有重複的字元,那麼加入第j個字元只需要判斷第j個字元在[k,j-1]中是否有重複字元即可,如果沒有,那麼[k,j]為不重複子串;如果s[i]==s[j],拋棄[k,i]這段字元,尋找包含j的子串必定為[i+1,j]。

此時,[k,j-1]中記錄的一定是非重複子串。

int lengthoflongestsubstring(char * s)

return max;

}

leetcode 3 無重複的字串

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

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

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

leetcode 3 最長無重複字串

3.longest substring without repeating characters 題面 given a string,find the length of the longest substring without repeating characters.給定字串,找到最長無重複字...