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

AJ.*_*AJ. 4 c algorithm

例如,给定字符串" abc fghi bc kl abcd lkm abcdefg ",该函数应返回字符串" abcd "并且计数为2.

AO(n ^ 2)解决方案似乎很容易,但我正在寻找更好的解决方案.

编辑:如果没有比O(n ^ 2)更好的方法,那么哪种方法最好的表现.

jas*_*son 9

您可以通过构建后缀树并从根到最深的内部节点获取路径,在线性时间内解决此问题; 这将给你最长的重复字符串.一旦你有了这个字符串,计算它出现的次数是微不足道的.