classSolution:defminDistance(self, word1:str, word2:str)->int:
m, n =len(word1),len(word2)
dp =[[0]*(n+1)for _ inrange(m+1)]for i inrange(m+1):
dp[i][0]= i
for j inrange(n+1):
dp[0][j]= j
for i inrange(1, m+1):for j inrange(1, n+1):if word1[i-1]== word2[j-1]:
dp[i][j]= dp[i-1][j-1]else:
dp[i][j]=min(min(dp[i-1][j], dp[i][j-1]), dp[i-1][j-1])+1return dp[m][n]
Java
classSolution{publicintminDistance(String word1,String word2){int m = word1.length()+1, n = word2.length()+1;int[][] dp =newint[m][n];for(int i =1; i < n;++i){// 首行
dp[0][i]= i;}for(int i =1; i < m;++i){// 首列
dp[i][0]= i;}for(int i =1; i < m;++i){for(int j =1; j < n;++j){if(word1.charAt(i -1)== word2.charAt(j -1)){
dp[i][j]= dp[i -1][j -1];}else{
dp[i][j]=Math.min(dp[i -1][j -1],Math.min(dp[i -1][j], dp[i][j -1]))+1;}}}return dp[m -1][n -1];}}