简单DP。
f (i, j) = f (i-1, j-1) , if (a[i] == b[j]);
f (i, j) = min { f (i-1, j-1), f (i-1, j), f (i, j-1)} + 1, else.
public class Solution {
public static int [][]re;
public int minDistance(String word1, String word2) {
// Start typing your Java solution below
// DO NOT write main() function
if(null == word1 && null == word2) return 0;
if(null == word1) return word2.length();
if(null == word2) return word1.length();
int len1 = word1.length(), len2 = word2.length();
re = new int[len1+1][len2+1];
for(int i=0;i<=len1;i++)
for(int j=0;j<=len2;j++)
{
if(i==0) re[i][j] = j;
else if(j==0) re[i][j] = i;
else
{
if(word1.charAt(i-1) == word2.charAt(j-1)) re[i][j] = re[i-1][j-1];
else
{
int min = re[i-1][j-1];
if(re[i-1][j] < min) min = re[i-1][j];
if(re[i][j-1] < min) min = re[i][j-1];
re[i][j] = min + 1;
}
}
}
return re[len1][len2];
}
}