72. 编辑距离

好像与1143. 最长公共子序列有点相似

使用两层循环遍历word1和word2的每个字符,如果当前字符相同,则编辑距离与前一个字符的编辑距离相同;

如果不同,则取替换、删除、插入三种操作的最小编辑距离加1。

1
2
3
4
5
6
7
8
9
10
11
class Solution:
def minDistance(self, word1: str, word2: str) -> int:
dp=[[0 for _ in range(len(word2)+1)] for _ in range(len(word1)+1)]
for i in range(len(word1)+1): dp[i][0] = i
for j in range(len(word2)+1): dp[0][j] = j
for i in range(1, len(word1)+1):
for j in range(1, len(word2)+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-1], dp[i-1][j], dp[i][j-1]) + 1
return dp[-1][-1]