題目描述:
給定一字串只包含數字,請寫乙個演算法,找出該字串中的最長不重複子串(不重複是指子串中每一元素不同於子串中其他元素)實現如下:如:「120135435」最長不重複子串為 「201354」
//時間複雜度o(n)
//空間複雜度o(m)
class
solution
void maxnonrepetitivestring(string str)
len = maxnum(len, current); //更新最長無重複子串的長度
map[str[j]] = j; //更新str[j]字元最後一次出現的位置下標
}//列印最長無重複子串
for (int k = begin; k <= end; ++k)
cout << str[k];
}};
求最長重複子串 和 最長不重複子串 思路
題目 求任意乙個字串中的所有最長重複字串和所有最長不重複子串 最長不重複子串的解法 設定乙個輔助資料結構 如map 記錄每個字元最後一次出現的位置 遍歷字串中的每個字元,如果在map中沒有出現,則不重複子串的長度 1,並更新最大字串的長度值 如果在map中已經出現過,則更新當前字元在map中的位置和...
求字串最長的重複子串
題目 給定乙個字串,求出其最長的重複子串 最長重複子串可以重疊 如字串abcdabcabcd,其最長的重複子串為abcd 如字串abcdabcda,其最長的重複子串為abcda。演算法思想 對字串生成相應的字尾陣列,再對其排序,排序後依次檢測相鄰兩個字串的公共字首,時間複雜度為o n 2 logn ...
最長不重複子串
出處 勇幸 thinking 題 從乙個字串中找到乙個連續子串,該子串中任何兩個字元不能相同,求子串的最大長度並輸出一條最長不重複子串。本節從最直接的方法逐步優化,漸進探索了四種實現方式,並最終找到時間複雜度為o n 輔助空間為常數的方案,內容如下 基本演算法 使用hash dp方案 dp hash...