数据结构和算法前端大杂烩

每日一算法:Levenshtein 距离

2021-04-19  本文已影响0人  lio_zero

莱文斯坦距离,又称Levenshtein 距离,是编辑距离的一种。指两个字串之间,由一个转成另一个所需的最少编辑操作次数。

允许的编辑操作包括:

  1. 将一个字符替换成另一个字符

  2. 插入一个字符

  3. 删除一个字符

JavaScript 实现

使用 Levenshtein 距离算法计算两个字符串之间的差。

const levenshteinDistance = (s, t) => {
  if (!s.length) return t.length
  if (!t.length) return s.length
  const arr = []
  for (let i = 0; i <= t.length; i++) {
    arr[i] = [i]
    for (let j = 1; j <= s.length; j++) {
      arr[i][j] =
        i === 0
          ? j
          : Math.min(
              arr[i - 1][j] + 1,
              arr[i][j - 1] + 1,
              arr[i - 1][j - 1] + (s[j - 1] === t[i - 1] ? 0 : 1)
            )
    }
  }
  return arr[t.length][s.length]
}

levenshteinDistance('duck', 'dark') // 2

此示例来自 30 seconds of code 的 levenshteinDistance

Leetcode 关于Levenshtein 距离的题目

其他算法

上一篇 下一篇

猜你喜欢

热点阅读