题目
求两个词的编辑距离,可以进行 插入,删除,替换三种操作。
思路
动态规划 状态定义: dp[i][j]表示从word1[0:i-1]变换到word2[0:j-1]的最小编辑距离 状态初始化:第一行和第一列都好解释,因为两个字符串都可以删除至空值“”,然后相等 状态转移: 注意,更新dp[i][j]时,判断的是word1[i-1] 和 word2[j-1]
代码
class Solution:
def minDistance(self
, word1
: str, word2
: str) -> int:
n
= len(word1
)
m
= len(word2
)
dp
= [[0 for _
in range(m
+1)] for _
in range(n
+1)]
for i
in range(n
+1):
dp
[i
][0] = i
for j
in range(m
+1):
dp
[0][j
] = j
for i
in range(1,n
+1):
for j
in range(1,m
+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
[n
][m
]