例如,给定字符串“ abc fghi bc kl abcd lkm abcdefg ”,该函数应返回字符串“ abcd ”并且计数为2.
O(n ^ 2)解决方案似乎很容易,但我正在寻找更好的解决方案。
编辑:如果没有比O(n ^ 2)更好的方法,那么哪种方法最佳性能。
答案 0 :(得分:9)
您可以通过构建suffix tree并从根到最深的内部节点获取路径,在线性时间内解决此问题。这将给你最长的重复字符串。一旦你有了这个字符串,计算它出现的次数是微不足道的。
答案 1 :(得分:2)
状态机可能比big-O(N ^ 2)更好。
编辑:在另一个答案中建议的后缀树是状态机的实现:)