代码:
//最小编辑距离
public class MinEditDistance {
public static void main(String[] args) {
String w1 = "apple";
String w2 = "apps";
int d = minDistance(w1, w2);
System.out.println(d);
w1 = "applee";
w2 = "apps";
d = minDistance(w1, w2);
System.out.println(d);
w1 = "apples";
w2 = "apps";
d = minDistance(w1, w2);
System.out.println(d);
}
static int minDistance(String w1, String w2) {
int l1 = w1.length();
int l2 = w2.length();
int[][] arr = new int[l1 + 1][l2 + 1];
for (int i = 0; i <= l1; i++) {
arr[i][0] = i;
}
for (int j = 0; j <= l2; j++) {
arr[0][j] = j;
}
for (int i = 1; i <= l1; i++) {
for (int j = 2; j <= l2; j++) {
if (w1.charAt(i - 1) == w2.charAt(j - 1)) {
arr[i][j] = arr[i - 1][j - 1];
} else {
arr[i][j] = Math.min(arr[i - 1][j - 1], Math.min(arr[i][j - 1], arr[i - 1][j])) + 1;
}
}
}
return arr[l1][l2];
}
}