相关疑难解决方法(0)

找到输入最相似字符串的最快方法?

给定长度为N的查询字符串Q,以及长度恰好为N的M个序列的列表L,找到L中具有最少错配位置的字符串的最有效算法是什么?例如:

Q = "ABCDEFG";
L = ["ABCCEFG", "AAAAAAA", "TTAGGGT", "ZYXWVUT"];
answer = L.query(Q);  # Returns "ABCCEFG"
answer2 = L.query("AAAATAA");  #Returns "AAAAAAA".
Run Code Online (Sandbox Code Playgroud)

显而易见的方法是扫描L中的每个序列,使搜索采用O(M*N).在次线性时间有没有办法做到这一点?我不在乎将L组织到某个数据结构中需要大量的前期成本,因为它会被查询很多次.此外,任意处理捆绑分数也没问题.

编辑:为了澄清,我正在寻找汉明距离.

language-agnostic string algorithm

12
推荐指数
2
解决办法
5208
查看次数

标签 统计

algorithm ×1

language-agnostic ×1

string ×1