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

2021-09-01 13:22:50 字數 1026 閱讀 8451

vs2013下執行

#include #include #include #includeusing namespace std;

class solution , res = 0, left = 0;

for (int i = 0; i= 2);

string result;

for (int i = 1; i < input.length() - 1; i++)

i++;

} else

} return result;

}int main()

return 0;

}

該題我看了很多博文,最難理解的語句是:

else

left = m[s[i]];

m[s[i]

]= i +

1;

這個語句什麼意思呢?就是說,更新字元在hash表中的值,也就是說,下一次碰到「滑動視窗」中有和i指標所指的字元相等的時候,我們首先更新left;其次,我們更新hash表中該值為i+1。

大家想沒想過為什麼更新m[s[i]] 的值為i+1呢?

我們試想,我們把這個m[s[i]] 的值更新為i+1,能達到什麼效果?那就是:下次我們可以直接把left定位到m[s[i]]所指的下乙個位置了!!!我們要的不就是這個效果嗎?

看下圖:

正常來說,到這了,我們想做的是什麼?是不是就是想把left移動到下乙個位置?也就是把left指標移動到m[a]的值的位置。所以,m[s[i]]的值就是為了記錄下一次出現這種有相同的情況,left應該指向的位置!!!

接著看下圖:

所以我們也就理解了,為什麼m[s[i]] = i + 1;因為我們要讓其指向下乙個位置!!!

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.給定字串,找到最長無重複字...