编辑距离算法被数据科学家广泛应用,是用作机器翻译和语音识别评价标准的基本算法。
最直观的方法是暴力检查所有可能的编辑方法,取最短的一个。所有可能的编辑方法达到指数级,但我们不需要进行这么多计算,因为我们只需要找到距离最短的序列而不是所有可能的序列。
class Solution:
def minDistance(self, word1: str, word2: str) -> int:
# leetcode submit region end(Prohibit modification and deletion)
w1 = len(word1)
w2 = len(word2)
dp = [[0] * (w2 + 1) for _ in range(w1 + 1)]
for i in range(w1 + 1):
dp[i][0] = i
for j in range(w2 + 1):
dp[0][j] = j
for i in range(1, w1 + 1):
for j in range(1, w2 + 1):
if word1[i - 1] == word2[j - 1]:
dp[i][j] = dp[i - 1][j - 1]
else:
dp[i][j] = min(dp[i - 1][j], dp[i][j - 1], dp[i - 1][j - 1]) + 1
return dp[w1][w2]