c - 字符串本身的最长公共(public)子串

标签 c string algorithm lcs

给定一个像 "geekthegeerthereegeers" 这样的字符串。所以我们必须找到字符串本身的最长公共(public)子串。

就像在这种情况下“geer”将是最长的公共(public)子字符串。 我的问题是这里将应用哪种算法。可以修改 LCS 来找到这个问题的解决方案吗?

最佳答案

问题“查找最长子串在子串集中出现多次”吗? “geekthegeertheregeers”的结果应该是“egeer”?

如果是这样,您可以为输入字符串构建后缀数组,并为后缀数组构建LCP(最长公共(public)前缀)数组。两者都可以在 O(N) 内完成(N 是输入字符串的长度)。

引用:

  1. 后缀数组 ( http://en.wikipedia.org/wiki/Suffix_array )
  2. LCP 阵列 ( http://en.wikipedia.org/wiki/LCP_array )

关于c - 字符串本身的最长公共(public)子串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20028480/

相关文章:

algorithm - 每个递归算法都是分而治之的算法吗?

javascript - 如何一个接一个地显示一个函数的输出

c - 为什么 memset 不能正确填充二维整数数组?

java - java子串方法中的OR条件

编译并运行一串C源代码

java - 如何在 Java 中格式化和打印多个字符串

python - 字符串是否被缓存?

string - 从字符串 'A' 中删除最少的字母以删除字符串 'B' 的所有实例

c - 为什么不打印数组?

c - 将一个子进程管道化为另一个子进程