查找最长的重复字符串及其在给定字符串中重复的次数


问题内容

例如,给定字符串“ abc fghi bc kl abcd lkm abcdefg ”,该函数应返回字符串“ abcd ”,计数为2。

AO(n ^ 2)解决方案似乎很简单,但我正在寻找更好的解决方案。

编辑: 如果没有什么比O(n ^ 2)更好的方法,那将是最佳的性能选择。


问题答案:

您可以通过构建后缀树并采用从根到最深内部节点的路径来在线性时间内解决此问题。这将为您提供最长的重复字符串。一旦有了该字符串,对它出现的次数进行计数就很简单了。