注意的点1、边界条件需要限定到:j1 or : i1解法动态规划DP法classSolution:defminDistance(self,word1:str,word2:str)-int:n,mlen(word1),len(word2)ifn0orm0:returnmax(m,n)dp[[0]*mfor_inrange(n)]# 得行和列分别初始化这块最难foriinrange(n):dp[i][0]i1-int(word2[0]inword1[:i1])forjinrange(m):dp[0][j]j1-int(word1[0]inword2[:j1])foriinrange(1,n):forjinrange(1,m):ifword1[i]word2[j]:dp[i][j]dp[i-1][j-1]else:dp[i][j]min(dp[i-1][j],dp[i-1][j-1],dp[i][j-1])1returndp[n-1][m-1]递归法classSolution:defminDistance(self,word1:str,word2:str)-int:ifnotword1ornotword2:returnlen(word1)len(word2)cachedefdp(i,j):ifi0:returnj1-int(word1[0]inword2[:j1])ifj0:returni1-int(word2[0]inword1[:i1])ifword1[i]word2[j]:returndp(i-1,j-1)else:returnmin(dp(i-1,j-1),dp(i,j-1),dp(i-1,j))1# 对应了三类操作returndp(len(word1)-1,len(word2)-1)