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

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

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

编辑:如果没有比O(n ^ 2)更好的方法比哪种方法最好的表现明智。

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

状态机可能比big-O(N ^ 2)更好。

编辑:在另一个答案中建议的后缀树是这样一个状态机的实现:)