Edit Distance

来源:互联网 发布:二级代理软件下载 编辑:程序博客网 时间:2024/03/29 06:24


简单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];    }}


原创粉丝点击