題目描述:
給定乙個字串,找出不含有重複字元的最長子串的長度。
示例: 給定"abcabcbb"
,沒有重複字元的最長子串是"abc"
,那麼長度就是3。
給定"bbbbb"
,最長的子串就是"b"
,長度是1。
給定"pwwkew"
,最長子串是"wke"
,長度是3。請注意答案必須是乙個子串,"pwke"
是 子串行 而不是子串。
加入用暴力就沒什麼好說的了,暴力的時間是o(o^3),用map優化的滑動視窗時間只需要o(n);
大致思路是:用stl中的map儲存記錄當前無重複最長字串的字元,向後依次滑動,每遇到乙個字元就判斷這個字元是否在map記錄中,如果有則判斷這個重複的記錄是否在當前無重複最長字串中,如果在就截斷這個無重複最長字串,如果沒有無重複最長字串的長度+1,並記錄該字元。
**如下:
#include#include#include#include#define max(a,b) a>b?a:b
using namespace std;
int main()
elseelse
mp[s[i]] = i;//更新重複的字元的位置}}
cout << max << endl;
return 0;
}
無重複字元的最長字串C
2020 02 03 class solution setdict int i 0 dict.insert s i int rtn 1 for int j 1 j s len j dict.insert s j else else return rtn 基本的思路是利用雜湊表來保證不重複的約束,利用...
無重複字串的最長字串
無重複字元的最長子串 難度中等 給定乙個字串,請你找出其中不含有重複字元的 最長子串 的長度。示例 1 輸入 abcabcbb 輸出 3 解釋 因為無重複字元的最長子串是 abc 所以其長度為 3。示例 2 輸入 bbbbb 輸出 1 解釋 因為無重複字元的最長子串是 b 所以其長度為 1。示例 3...
無重複字元的最長字串
給定乙個字串,請你找出其中不含有重複字元的 最長子串 的長度。示例 1 輸入 abcabcbb 輸出 3 解釋 因為無重複字元的最長子串是 abc 所以其長度為 3。示例 2 輸入 bbbbb 輸出 1 解釋 因為無重複字元的最長子串是 b 所以其長度為 1。示例 3 輸入 pwwkew 輸出 3 ...