Edit Distance
class Solution {
public int minDistance(String word1, String word2) {
int n = word1.length();
int m = word2.length();
int[][] f = new int[n + 1][m + 1];
//不能在循环里初始化,是为了防止a,b的长度不足1时候。
for(int i=0; i< m+1; i++){
f[0][i] = i;
}
for(int i=0; i<n+1; i++){
f[i][0] = i;
}
for(int i = 1; i <= n; i ++){
for(int j = 1; j <= m; j ++){
if(word1.charAt(i-1) == word2.charAt(j-1)){
f[i][j] = f[i - 1][j - 1];
}else{
f[i][j] = Math.min(f[i - 1][j - 1], Math.min(f[i-1][j],f[i][j-1])) + 1;
}
//loop里也可以
//f[i][j] = word1.charAt(i-1) == word2.charAt(j-1) ? f[i - 1][j - 1] : f[i - 1][j - 1] + 1;
//f[i][j] = Math.min(f[i][j], Math.min(f[i-1][j],f[i][j-1]) + 1);
}
}
return f[n][m];
}
}Last updated