【问题标题】:Finding All longest common substring查找所有最长的公共子串
【发布时间】:2014-04-16 12:48:18
【问题描述】:

我试图在两个字符串之间找到所有最长的公共子字符串

假设我已经正确计算了 Suffix 数组和 LCP 数组作为 SA[] 和 LCP[] 我的逻辑是正确的还是我遗漏了什么?

这里 LCP 数组位于 i 和 i-1 索引之间。

假设我们有两个字符串 str=abcabc 和 str1=bc。我改变 str= str + '#' + str1。

我的后缀数组 SA[]=[6,3,0,7,4,1,8,5,2]

而 LCP 数组为 =[0,0,3,0,2,2,0,1,1]

找到它们的更好算法是什么?

【问题讨论】:

  • 您可以自己轻松回答这个问题,方法是检查它是否有效。
  • @JoachimPileborg 其实我想知道更好的算法来找到所有最长的公共子字符串,它们的索引在不同的向量/数组中
  • 在这种情况下,我认为这不是 SO 的问题,而是更适合 codereview.stackexchange.com。此外,如果您想要一个更好的算法,那么您可能应该在您的问题中实际说明这一点。

标签: c++ algorithm


【解决方案1】:

有一篇关于有效查找所有常见子字符串的好文章,其中包含 C 中的示例。 http://www.drdobbs.com/architecture-and-design/algorithm-alley/184404588

【讨论】:

  • 不仅仅是提供链接,it would be preferable 在此处包含答案的基本部分,并提供链接以供其他参考。如果您不能胜任这项任务,您应该考虑在问题上简单地leaving a comment 而不是发布答案。
  • 好的,杜克林。我是新来的(我昨天开始(尝试)回答问题):)
  • 杜克灵的评论仍然适用
猜你喜欢
  • 2012-10-07
  • 1970-01-01
  • 2014-04-14
  • 2012-05-02
  • 1970-01-01
  • 2015-06-23
  • 2020-07-31
  • 2016-06-03
  • 2010-11-28
相关资源
最近更新 更多