【发布时间】: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。此外,如果您想要一个更好的算法,那么您可能应该在您的问题中实际说明这一点。