莱文斯坦距离计算器(编辑距离)
计算两个字符串的莱文斯坦编辑距离和相似度,支持相邻字符互换(Damerau)、编辑列表、DP 表,并可对列表中的候选项按相似度排序。
字符按 Unicode 码点比较,因此一个 emoji 或一个韩文音节都算作一个字符。
| # | 编辑 | 位置 | 原内容 | 新内容 |
|---|---|---|---|---|
| 1 | 替换 | 1 | 北 | 清 |
| 2 | 替换 | 2 | 京 | 华 |
| ε | 清 | 华 | 大 | 学 | |
|---|---|---|---|---|---|
| ε | 0 | 1 | 2 | 3 | 4 |
| 北 | 1 | 1 | 2 | 3 | 4 |
| 京 | 2 | 2 | 2 | 3 | 4 |
| 大 | 3 | 3 | 3 | 2 | 3 |
| 学 | 4 | 4 | 4 | 3 | 2 |
莱文斯坦距离是把一个字符串变成另一个字符串所需的单字符插入、删除和替换的最少次数——拼写建议、模糊搜索、重复检测和 DNA 比对背后用的都是这个度量。这个计算器会给出距离和相似度百分比,列出具体的编辑,为较短的字符串展示动态规划表,还可以按与你的字符串的接近程度,对整个候选列表排序。
使用方法
- 输入两个字符串(或一个字符串和一个列表,每行一个候选项)。
- 选择普通莱文斯坦,或选择 Damerau,把相邻字符互换算作一次编辑。
- 可选:忽略大小写和空白,或按单词比较。
- 查看距离、相似度和编辑内容;字符串不超过 20 个字符时会显示表格。
计算公式
d[i][j] = min(d[i−1][j] + 1, d[i][j−1] + 1, d[i−1][j−1] + (aᵢ ≠ bⱼ)) · 相似度 = 1 − d ÷ max(|a|, |b|)
d[i][j] 是 a 的前 i 个字符与 b 的前 j 个字符之间的距离,从 d[i][0] = i 和 d[0][j] = j 开始。相邻互换(最优字符串对齐)变体在相邻两个字符互换时增加 d[i−2][j−2] + 1,但不会对同一子串编辑两次;无限制的 Damerau–莱文斯坦距离取消了这一限制(CA → ABC 是 2 而不是 3)。字符按 Unicode 码点计算,单词以空白分隔。
示例
北京大学 → 清华大学 = 2:把“北”替换为“清”,把“京”替换为“华”。两个字符串都是 4 个字符,所以相似度是 1 − 2/4 = 50%。上海 → 上海市 的距离是 1(插入“市”)。以北京大学为基准,对列表北京大学生、清华大学、北京交通大学、南京大学排序,距离为 1 的北京大学生排第一。
常见问题
莱文斯坦和 Damerau–莱文斯坦有什么区别?
Damerau 还把相邻两个字符互换(teh → the)算作一次编辑,更符合常见的打字错误;普通莱文斯坦则需要两次替换。
相似度是标准度量吗?
1 − 距离 ÷ 较长长度是常用的归一化方式,但也有其他方式(例如除以两者长度之和)。比较分数时请使用同一种方式。
字符串最长可以多长?
每个最多几千个字符;计算量随两个长度的乘积增长。分步表格仅在字符串不超过 20 个字符时显示。
资料来源
最后更新:
包含这些输入的页面地址: https://kakao.mobile/zh/tools/levenshtein-distance-tool/
引用此工具
kakaoCalc. (2026, November 8). 莱文斯坦距离计算器(编辑距离). https://kakao.mobile/zh/tools/levenshtein-distance-tool/
“莱文斯坦距离计算器(编辑距离).” kakaoCalc, 8 Nov. 2026, kakao.mobile/zh/tools/levenshtein-distance-tool/.