給定乙個字串,請你找出其中不含有重複字元的 最長子串 的長度。
示例 1:
輸入: "abcabcbb"
輸出: 3
解釋: 因為無重複字元的最長子串是 "abc",所以其長度為 3。
示例 2:
輸入: "bbbbb"
輸出: 1
解釋: 因為無重複字元的最長子串是 "b",所以其長度為 1。
示例 3:
輸入: "pwwkew"
輸出: 3
解釋: 因為無重複字元的最長子串是 "wke",所以其長度為 3。
請注意,你的答案必須是 子串 的長度,"pwke" 是乙個子串行,不是子串。
思路:
1.基本思路:採用滑動視窗的思想,即設定start,end分別從s的0號位置開始遍歷,end每向後走一位,判斷s[end]是否在start到end之間出現過,如果出現過,記錄位置為s,儲存當前的length=end-start,同時將start移動到s的後一位,繼續遍歷,直至end=s.size(),輸出過程中最大的length。
2.優化,對於查詢s[end]是否在start到end之間出現過,採用hashmap的方法,將字元與其對應的下標儲存起來,對每乙個s[end],判斷是否在hashmap**現過並且hashmap[end]>=start(當前判斷的位置一定要在start之後,因為s[end]可能在start之前出現過,這種情況不能更新),如果滿足條件,令start儲存為hashmap[end]+1,更新length。最後輸出過程中最大的length。
ac**:(c++)
class
solution
mp[temp]
= end;
end++
, length++;if
(length > max_length) max_length = length;
}return max_length;}}
;
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.給定字串,找到最長無重複字...