主要的思路是雙指標+ hash_map。
class solution {
public:
int lengthoflongestsubstring(string s) {
if(s.size() <= 1) return s.size();
mapk;
int max_length = 0;
int start(0); int end(0);
while(end < s.size()){
max_length = max_length > end - start? max_length: end - start; //每走一步都對比一下
if(k.count(s[end])) start = start > k[s[end]] + 1 ? start : k[s[end]] + 1; // 當有重複的時候,start 指標要向重複字母開始的一位後一位賦值。
k[s[end]] = end; //這裡比較巧妙。不用判斷是否是有重複字母,一直更新就好了。
end ++;
return max_length > end -start? max_length: end-start; // 主要是為了防止end 指標在最後一位的情況。
3 無重複字元的最長子串
給定乙個字串,找出不含有重複字元的最長子串的長度。示例 給定 abcabcbb 沒有重複字元的最長子串是 abc 那麼長度就是3。給定 bbbbb 最長的子串就是 b 長度是1。給定 pwwkew 最長子串是 wke 長度是3。請注意答案必須是乙個子串,pwke 是 子串行 而不是子串。思路 用 i...
3 無重複字元的最長子串
給定乙個字串,找出不含有重複字元的最長子串的長度。示例 1 輸入 abcabcbb 輸出 3 解釋 無重複字元的最長子串是 abc 其長度為 3。示例 2 輸入 bbbbb 輸出 1 解釋 無重複字元的最長子串是 b 其長度為 1。示例 3 輸入 pwwkew 輸出 3 解釋 無重複字元的最長子串是...
3 無重複字元的最長子串
給定乙個字串,請你找出其中不含有重複字元的最長子串的長度。示例 1 輸入 abcabcbb 輸出 3解釋 因為無重複字元的最長子串是 abc 所以其長度為 3。示例 2 輸入 bbbbb 輸出 1解釋 因為無重複字元的最長子串是 b 所以其長度為 1。示例 3 輸入 pwwkew 輸出 3解釋 因為...