最大不重複子串

2021-08-28 15:05:49 字數 754 閱讀 2391

思路:

利用hash表hashtable[256]來儲存出現過的字元,然後從頭開始遍歷字串,

1、如果當前字元ch已經出現過(hashtable[ch]==1),則表示乙個區域性最長不重複子串已經出現:

此時判斷該子串長度len是否大於mlen,如果是,則更新mlen,以及最長子串的起始位置mstart。

同時將start到重複字元ch之間的hash表重置為0(表示沒有出現過),相應的長度len也減小,然後從ch的下個字元作為新的子串的開始;

2、如果當前字元ch沒有出現過:

則設定hashtable為1(表示出現過),並len++。

#includeusing namespace std;

int getlongestunrepeatedsubstr(const string &str)

; int start=0;

int mstart=0;

int mlen=0;

int idx=0;

int len=0;

while(idx!=str.size())

while(str[start]!=str[idx])

start++;

}else

idx++;

}if(len>mlen)

cout<< str.substr(mstart,mlen) <>str)

return 0;

}

C語言練習之2最大不重複子串

示例 1 輸入 abcabcbb 輸出 3 解釋 因為無重複字元的最長子串是 abc 所以其長度為 3。分析 0123456789 字串長度為10,那麼最大子串長度 為10,並且只有1種情況 0123456789 長度為9有2種情況 012345678,123456789 長度為8有3種情況 012...

leetcode 3 找到最大不重複子字串

給定乙個字串,請你找出其中不含有重複字元的 最長子串 的長度。示例 1 輸入 abcabcbb 輸出 3 解釋 因為無重複字元的最長子串是 abc 所以其長度為 3。示例 2 輸入 bbbbb 輸出 1 解釋 因為無重複字元的最長子串是 b 所以其長度為 1。示例 3 輸入 pwwkew 輸出 3 ...

最長不重複子串

出處 勇幸 thinking 題 從乙個字串中找到乙個連續子串,該子串中任何兩個字元不能相同,求子串的最大長度並輸出一條最長不重複子串。本節從最直接的方法逐步優化,漸進探索了四種實現方式,並最終找到時間複雜度為o n 輔助空間為常數的方案,內容如下 基本演算法 使用hash dp方案 dp hash...