給定乙個字串,請你找出其中不含有重複字元的 最長子串 的長度。
示例 1:
輸入: "abcabcbb"示例 2:輸出: 3
解釋: 因為無重複字元的最長子串是 "abc",所以其長度為 3。
輸入: "bbbbb"示例 3:輸出: 1
解釋: 因為無重複字元的最長子串是 "b",所以其長度為 1。
輸入: "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.給定字串,找到最長無重複字...