【发布时间】:2013-05-22 02:35:11
【问题描述】:
我试图从多个固定长度字符串的相同位置找到所有可能的最长公共子序列(总共有 700 个字符串,每个字符串有 25 个字母)。最长的公共子序列必须包含至少 3 个字母并且属于至少 3 个字符串。所以如果我有:
String test1 = "abcdeug";
String test2 = "abxdopq";
String test3 = "abydnpq";
String test4 = "hzsdwpq";
我需要的答案是:
String[] Answer = ["abd", "dpq"];
我的一个问题是这需要尽可能快。我正在尝试用后缀树寻找答案,但是后缀树方法的解决方案是["ab","pq"]。后缀树只能从多个字符串中找到连续的子串。常见的最长公共子序列算法无法解决这个问题。
有谁知道如何以较低的时间成本解决这个问题?
谢谢
【问题讨论】:
-
可能有多少个字符串?字符串数量和长度的上限是多少?
-
abd和pdq都没有出现在任何字符串中?它们怎么可能是子字符串? -
“abd”出现在test1、test2和test3中,“dpq”出现在test2、test3和test4中
-
共有700个字符串,每个字符串有25个字母
标签: suffix-tree string-comparison