后缀树:最长的重复子串实现

时间:2010-12-18 18:56:20

标签: algorithm string data-structures suffix-tree lcs

我实现了一个未压缩的后缀树。我想知道如何解决在字符串中找到最长的表示子字符串的问题。我知道我们必须找到有两个孩子的最深的内部节点,但是如何编写代码呢。另外,我们如何知道最长的重复子串是什么。我对JAVA中的代码感兴趣。请给出java实现。作为参考,我的TrieNode看起来像

class TrieNode{

char ch;
LinkedList<TrieNode> child;

}

3 个答案:

答案 0 :(得分:2)

答案 1 :(得分:1)

如果存储字符串字节的结尾,则它只是具有2个子节点的最深节点。

要找到最长的子字符串,您需要执行depth first search,保留对具有2个或更多子节点的最深节点的引用及其深度。这对于递归函数来说是最容易的。

答案 2 :(得分:0)

要找到最深的节点,还可以执行BFS并选择具有最高级别的节点。我认为具有最高级别的节点也是最深的节点。然后你可以检查它是否有2个孩子。否则更高。 不确定这是否会奏效。任何评论pps?