3
使用后缀数组计算两个字符串的最长公共子字符串
在学习了如何以复杂度构建后缀数组之后,我对发现后缀数组的应用感兴趣。其中之一是在时间中找到两个字符串之间最长的公共子字符串。我在互联网上发现以下算法:O(N)O(N)O(N)O(N)O(N)O(N) 将两个字符串和合并为一个字符串AAABBBABABAB 计算的后缀数组ABABAB 计算(最长公共前缀)数组LCPLCPLCP 答案是最大值LCP[i]LCP[i]LCP[i] 我尝试实现它,但是由于没有说很多实现细节(即,在连接字符串时,是否应该在它们之间加上一个特殊字符()?),我的代码在许多测试用例上均失败了。有人可以详细说明一下该算法吗?AcBAcBAcB 提前致谢。 注意:我不保证该算法的正确性;我在博客上找到了它,但不确定它是否有效。如果您认为它不正确,请提出另一种算法。