無重複最長字串 (C )

2021-08-21 05:59:28 字數 736 閱讀 3084

題目描述:

給定乙個字串,找出不含有重複字元的最長子串的長度。

示例: 給定"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 ...