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

2021-09-24 19:22:21 字數 772 閱讀 1391

例如:

例如字串 s =「abcdeabc」

輸出:abc

為何選用字尾?

字尾字串的字首包含了字串s的部分子串,只要求出字串s的所有字尾就可間接的表示了s所有的子串

儲存s字串的所有字尾

對所有字尾進行排序(自然排序)

比較排序後的相鄰的字尾的最長公共子串(兩個字尾從第乙個字元開始的就相等得到公共子串),求出最長的公共子串**

public

class

main

collections.

sort

(list)

;int maxlen =0;

for(

int i =

0;ilength()

-1;i++

) system.out.

println

(result+

":"+maxlen);}

//得到兩個字串最長公共長度

public

static

intgetcomlen

(string str1,string str2)

} string temp = str1.

substring(0

,i);

if(temp.

length()

>result.

length()

) result = temp;

return i;

}}

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

問題描述 給定乙個字串,尋找這個字串的最長重複子串,如abcdeabc,其最長的重複子串為abc。這個問題來自別人的部落格 問題1.產生陣列向左平移的過程。如 abc bc c abd bd d 最長為2.資料庫更快。問題2.找到所有的字串。然後排序。當然也是資料庫操作最好。問題3.如果確定16個字...

leetcode 求乙個字串的最長回文子串

最長回文子串問題 給定乙個字串,求它的最長回文子串長度。如果乙個字串正著讀和反著讀是一樣的,那它就是回文串。給定乙個字串,求它最長的回文子串長度,例如輸入字串 35534321 它的最長回文子串是 3553 所以返回 4。最容易想到的辦法是列舉出所有的子串,然後一一判斷是否為回文串,返回最長的回文子...

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

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