classSolution{public:intminDistance(string word1, string word2){int size1 = word1.size(), size2 = word2.size();
vector<vector<int>>dp(size1 +1,vector<int>(size2 +1, INT_MAX));for(int i =0; i <= size2;++i){
dp[0][i]= i;}for(int i =0; i <= size1;++i){
dp[i][0]= i;}for(int i =1; i <= size1;++i){for(int j =1; j <= size2;++j){if(word1[i -1]!= word2[j -1]){
dp[i][j]=min(dp[i][j], dp[i -1][j]+1);
dp[i][j]=min(dp[i][j], dp[i][j -1]+1);
dp[i][j]=min(dp[i][j], dp[i -1][j -1]+1);}else{
dp[i][j]= dp[i -1][j -1];}}}return dp[size1][size2];}};
代码实现(五刷自解 DAY 4 Golang)
funcmin(x, y int)int{if x <= y {return x
}else{return y
}}funcminDistance(word1 string, word2 string)int{
dp :=make([][]int,len(word1)+1)for i,_:=range dp {
dp[i]=make([]int,len(word2)+1)}for i :=1; i <=len(word1); i++{
dp[i][0]= i
}for i :=1; i <=len(word2); i++{
dp[0][i]= i
}for i :=1; i <=len(word1); i++{for j :=1; j <=len(word2); j++{if word1[i -1]== word2[j -1]{
dp[i][j]= dp[i -1][j -1]}else{
dp[i][j]= dp[i -1][j -1]+1
dp[i][j]=min(dp[i][j],min(dp[i -1][j]+1, dp[i][j -1]+1))}}}return dp[len(dp)-1][len(dp[0])-1]}