首页 笔记 图片 查字 
所属分类:其它
浏览:43
内容:

代码:

//最小编辑距离
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];
    }
}