0
如果我想为2个字符串找到最长的公共子字符串,那么哪种方法在时间/空间复杂度方面更高效:使用DP后缀数组?2/3字符串的最长公共子字符串:后缀数组与动态编程方法
DP将产生具有O(m * n)时间复杂度的O(m * n)空间,那么后缀数组方法的时间复杂度是多少?
1)计算后缀O(M)+ O(n)的 2)对它们进行排序O(M + N的log 2(M + N)) 3)寻找对于m + n-1个字符串最长的共同前缀? [我不知道如何计算#of比较]
后缀数组允许我们对子字符串做更多的事情(如搜索子字符串等),但是因为在这种情况下,其余的函数是不需要的,DP会被认为是一种更容易/更清晰的方法?在我们比较2个字符串的情况下应该使用哪一个?
另外,如果我们有超过2个字符串呢?
请问您能多解释一下。我可以用两个字符串和dc3后缀数组和lcp数组来做到这一点。在那里我可以检查最大的lcp值,这样我和i-1应该指向不同的字符串。对于10个这样的字符串,我是否需要在lcp数组中检查连续10个这样的值,以确定它们中的每一个应该指向不同的字符串? – Naman 2015-06-13 23:42:03