[英]Longest common substring of 2 strings implementation
我正在尝试在C中实现最长的通用子字符串算法 ,在阅读了下面的文章之后,我对以下部分感到非常困惑:
现在,最大值是LCP [2] = 3,但这是针对SA [1]和SA [2]的,它们都以字符串A开头。因此,我们忽略了它们。 另一方面,LCP [4] = 2用于SA [3](对应于B的后缀bc)和SA [4](对应于A的后缀bcabc#bc)。 因此,这是最长的公共子字符串。
我的LCP结果也与发布示例不同。
[#bc,abc#bc,abcabc#bc,bc,bc#bc,bcabc#bc,c,c#bc,cabc#bc]
[-1,0,3,0,2,2,2,0,1,1]
或删除第一个元素
[abc#bc,abcabc#bc,bc,bc#bc,bcabc#bc,c,c#bc,cabc#bc]
[0,3,0,2,2,2,0,1,1]
我看到SA [3]对应于bc ,但SA [4]对应于#bcbc (我想)。 所以,这就是令我困惑的地方。
任何人都可以澄清吗? 谢谢!
我看到SA [3]对应于bc,但SA [4]对应(我想)对应于#bcbc。
在上面的任何地方都找不到#bcbc。 引号说:“ SA [4](对应于A的后缀bcabc#bc)”,这确实是正确的:
0 1 2 3 4 5 6 7 index
[abc#bc, abcabc#bc, bc, bc#bc, bcabc#bc, c, c#bc, cabc#bc] Suffix Array
[0, 3, 0, 2, 2, 0, 1, 1] LCP
SA [2]是B的后缀,而SA [3]是A(#B)的后缀,因此最长的公共子字符串是bc,长度为2。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.