计算 Levenshtein distance
Levenshtein 距离 measures 最小值 edits (插入, delete, substitute) 到转换 one 字符串为 另一个. Used 在 spell checking 和 fuzzy matching.
- 1
Levenshtein 距离是 computed 具有动态 programming: 创建矩阵的 大小 (m+1)×(n+1), initialize 第一行 和列 具有 0..m 和 0..n, 然后为 每个单元格计算 min(插入, delete, substitute) based 开前一个 cells. 距离是 在 bottom-right 单元格. Time 和 space: O(m×n); space 能够是 optimized 到 O(min(m,n)) 通过 keeping 仅 two rows.
- 2 文本差异比较器 →
比较两个 texts to see their differences. While text-diff shows line-level changes, Levenshtein operates at character level. Use text-diff for documents and Levenshtein for short strings (words, names, commands)
- 3 字数统计器 →
为字-级别 Levenshtein, tokenize 两者 texts 为字 arrays 和计算距离开 arrays. 此 measures 字-级别 edits (insertion, deletion, substitution 的 words) 而非字符-级别 edits — useful 为 comparing sentences 或 paragraphs.
常见问题
- 如何是 Levenshtein 距离 used 在 spell checking?
- 为 misspelled 字, 计算 Levenshtein 距离到 每个 dictionary 字. Suggest dictionary words 具有 smallest 距离 (通常 1-2). 为效率, use BK-树 (indexes 通过 Levenshtein 距离) 到 avoid comparing 针对每个字. 最多 spell checkers use 此方法.
- Levenshtein vs Damerau-Levenshtein?
- Levenshtein allows 插入, delete, substitute (3 操作). Damerau-Levenshtein adds transposition 的 adjacent characters (ab → ba 在 one edit). Damerau 是更多 appropriate 为 typing 错误 (adjacent 键 swaps 是常见). 两者是 O(m×n) 时间和 space. Use Damerau 为 spell checking, Levenshtein 为通用字符串 comparison.