我的任务是确定一个有效的算法[O(n * log(n))],给定一组k个字符串S = {s-1,s-2,s-3,..., sk},将识别每对字符串(si,sj)的最长子串T,使得T是si的后缀和sj的前缀,以及每对字符串的最长子串T(sj,si) )。 n表示所有k个字符串的相加长度(n = | s-1 | + | s-2 | + | s-3 | + ... + | s-k |)。
有什么想法?解决方案的链接也可以。提前谢谢!
答案 0 :(得分:0)
本书Algorithmic Aspects of Bioinformatics第61页的算法4.10给出了一种使用后缀树计算一组给定字符串的最长公共子字符串的方法
本文还解释了如何找到最长的公共子字符串
相对于后缀树大小的线性时间,即 O(n log n)。