尋找乙個字串中的最長重複子串

2021-07-22 14:35:47 字數 490 閱讀 2491

問題描述:給定乙個字串,尋找這個字串的最長重複子串,如abcdeabc,其最長的重複子串為abc。

這個問題來自別人的部落格

問題1.

產生陣列向左平移的過程。如

abc-bc-c

abd-bd-d

最長為2.資料庫更快。

問題2.

找到所有的字串。然後排序。當然也是資料庫操作最好。

問題3.

如果確定16個字元最長的話,那麼用陣列就可以了。

如果大於16的話。就要每次判斷大於16,否則拋棄。

2個首字元之間的距離要大於16。

從首字元開始的話比如a,那麼對於下乙個b作為子字串開頭的話,首先收索到,這個時候就要先處理b開頭的字串。同時記錄下個b開頭的子字串中a的位置。如果找到大於16的字串匹配,那麼當前的最大串就要更新。當然對於下個子字串,從後向前搜尋前個字串是比較符合實際的。

同時找到一些特殊的字元做為組分割是比較合理的。比如a作為分組條件。

求乙個字串最長重複子串(Java版)

例如 例如字串 s abcdeabc 輸出 abc 為何選用字尾?字尾字串的字首包含了字串s的部分子串,只要求出字串s的所有字尾就可間接的表示了s所有的子串 儲存s字串的所有字尾 對所有字尾進行排序 自然排序 比較排序後的相鄰的字尾的最長公共子串 兩個字尾從第乙個字元開始的就相等得到公共子串 求出最...

面試題35 尋找乙個字串中最長的重複子串

思路 1.用字串指標陣列儲存使用者輸入的字串的所有字尾字串 2.將字尾字串集合進行排序 3.比較相鄰字串的公共子串長度,找到長度最大值,儲存相應字串即為所求 如下 include stdafx.h include include include define maxchar 5000 最長處理500...

在乙個字串中尋找另外乙個字串

在乙個字串中尋找另外乙個字串 public class text foundit true break test system.out.println foundit?found it didn t find it 該段程式有點難以理解,主要就是if語句的理解,if searchme.charat ...