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

标签 c algorithm

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

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

已编辑:如果没有比 O(n^2) 更好的方法,那么哪种方法是最佳性能明智的。

最佳答案

您可以通过构建 suffix tree 在线性时间内解决此问题并采取从根到最深内部节点的路径;这将为您提供最长的重复字符串。获得该字符串后,计算它出现的次数就很简单了。

关于c - 查找最长的重复字符串及其在给定字符串中重复的次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2172033/

相关文章:

c - fgets()/scanf() do-while 循环

编译错误: Fprintf throws parse error

arrays - 下面代码中函数内部的 (if block) 的作用是什么?

java - 从 Arraylist 中过滤掉整数(索引)

c - Gnu 在单独的行上缩进函数调用参数

c - 在运行时使用 malloc 创建二维数组

c++ - 使用 Visual Studio 2008 在 C++ 中实现逐次逼近算法的问题

algorithm - 爬山搜索和最佳优先搜索有什么区别?

插入命令行后,程序无法运行

algorithm - 随机世界生成街道