字串 最長重複子串

2021-08-28 06:48:31 字數 690 閱讀 6301

乙個長度為10000的字串,寫乙個演算法,找出最長的重複子串,如abczzacbca,結果是bc

trie 樹典型應用。-- 字尾樹

package leetcode;

/** * 乙個長度為10000的字串,寫乙個演算法,找出最長的重複子串,如abczzacbca,結果是bc

*/public class longestcommonsubstring

public void buildsuffixtrie(string str, trienode root)else

node = node.next[index];

}node.isword = true;}}

public string longestcommonsuffix(trienode root, string cur_prefix)

tmp = longestcommonsuffix(root.next[i], cur_prefix + string.valueof(((char)('a'+i))));

}if(tmp.length() > res.length())

res = tmp;

}return res;

}class trienode

}public static void main(string args)

}

求字串最長的重複子串

題目 給定乙個字串,求出其最長的重複子串 最長重複子串可以重疊 如字串abcdabcabcd,其最長的重複子串為abcd 如字串abcdabcda,其最長的重複子串為abcda。演算法思想 對字串生成相應的字尾陣列,再對其排序,排序後依次檢測相鄰兩個字串的公共字首,時間複雜度為o n 2 logn ...

最長重複子串

首先這是乙個單字串問題。子字串r 在字串l 中至少出現兩次,則稱r 是l 的重複子串。重複子串又分為可重疊重複子串和不可重疊重複子串。方法 kmp演算法求解 在kmp演算法的關鍵就是求解next陣列,針對next j k,可以得到p 0,1,k 1 p j k,j k 1,j 1 看到p 0,1,k...

最長重複子串

思路 使用字尾陣列解決 分析 1 由於要求最長公共子串行,則需要找到字串的所有子串,即通過產生字串的字尾陣列實現。2 由於要求最長的重複子串,則需要對所有子串進行排序,這樣可以把相同的字串排在一起。3 比較 相鄰字串,找出兩個子串中,相同的字元的個數。注意,對於乙個子串,乙個與其重複最多的字串肯定是...