0. 题目 与 总结
时间复杂度 o(NM)
空间复杂度 o(NM)
1. 2维dp
class Solution(object):
def minDistance(self, word1, word2):
l1=len(word1)
l2=len(word2)
if l1==0 or l2==0:
return max(l1,l2)
# 初始化
M = [ [0] * (l2 + 1) for _ in range(l1 + 1)]
for j in range(l2+1):
M[0][j]=j
for i in range(l1+1):
M[i][0]=i
# 状态转移
for i in range(1,l1+1):
for j in range(1,l2+1):
# 状态转移方程
if word1[i-1]==word2[j-1]:
M[i][j]=M[i-1][j-1]
else:
M[i][j]=min(M[i-1][j-1],M[i-1][j],M[i][j-1])+1
return M[l1][l2]