class Solution {
public int minDistance(String word1, String word2) {
int len1 = word1.length()+1;
int len2 = word2.length()+1;
int[][] dp = new int[len1][len2];
for(int i=0;i<len1;++i) dp[i][0] = i;
for(int i=0;i<len2;++i) dp[0][i] = i;
for(int i=1;i<len1;++i)
{
for(int j=1;j<len2;++j)
{
int cost=1;
if(word2.charAt(j-1)==word1.charAt(i-1))
{
cost=0;
}
int replace = dp[i-1][j-1]+cost;
int remove = dp[i-1][j]+1;
int insert = dp[i][j-1]+1;
dp[i][j]=Math.min(replace,remove);
dp[i][j]=Math.min(dp[i][j],insert);
}
}
return dp[len1-1][len2-1];
}
}
//dp[i][j] = min(replace,insert,remove); 最小的损耗
从 ho -> r 需要 remove ho 再 insert r 3
从 h-> r replace h to r 1
从 h ->r remove h and and r 2