c 解決給定字串中無重複子字串長度問題

2021-08-17 09:55:38 字數 752 閱讀 2448

思路:

1. 用i,j記錄當前操作的子字串,i為起點,j為終點,j-i為子字串長度;(i,j是給定字串中的下標位置)

每次移動j讀取乙個新字元,比較子字串(用容器暫存)中有無重複的字元,若有,說明子字串長度要變,將起點i右移;

此時不代表重複的那個字串從容器中移除了,如:abc bda,j指向第二個b時,i指向a;因為子字串(無重複)應是連續相鄰

的字串,當前子字串「abc」已經遇到重複元素,說明「abc」這個無重複連續子字串長度就是3了,但給定字串還未取完,所以要重新找無重複連續子字串,ab均要移除容器,下乙個起點為c;

因此程式不急於彈出重複元素,而是每次彈出起點i所指的元素(彈出後i+1);

2. 當前無重複連續子字串長度為j-i,但每一輪取得的子字串長度應被儲存,ans=max(ans,j-i);該語句將每一輪取得長度與之前作比較,將較大值存在ans中,因此最後得到的ans值即為所求。

#include

#include

#include

using namespace std;

/*題目描述:給定乙個字串,找出最長的沒有重複字元的子字串的長度

如:「abcabcd」

無重複子字串長度為4

*/int substringsearch(char str)

else    //如果有重複元素

}return ans;

}int main()

}

leetcode 最長無重複子字串

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

字串 最長重複子串

乙個長度為10000的字串,寫乙個演算法,找出最長的重複子串,如abczzacbca,結果是bc trie 樹典型應用。字尾樹 package leetcode 乙個長度為10000的字串,寫乙個演算法,找出最長的重複子串,如abczzacbca,結果是bc public class longest...

最長重複子串 LeetCode無重複字元的最長子串

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