我的问题是我有一个由大约七千个512位字符串组成的数据集,我正在寻找最有效的方法来比较它们并识别30多位的重复序列。
我考虑使用蛮力,但我认为这似乎不是一个合适的解决方案。
有许多算法可以执行字符串匹配,但我不知道哪个算法最适合我的问题
答案 0 :(得分:3)
如果您有大量字符串并希望找到所有这些字符串共有的长子字符串,您可能需要考虑为所有字符串构建 generalized suffix tree 。完成后,您可以通过深度优先搜索迭代树并查找具有多个不同字符串的结束标记的子字符串,找到字符串的任何子集所共有的所有子字符串。
由于通用后缀树的大小是O(N),其中N是所有不同子串中的字符总数,后缀树可以在时间O(N)中构建,整个运行时为这个操作应该是O(N)。
希望这有帮助!