您的位置:首页 > 编程语言

编辑距离的求解方法和代码实现

2013-06-23 17:24 246 查看
关于编辑距离的讲解可以参考以下网址:/article/4882247.html

编辑距离就是一个字符串最少经过多少次操作步骤可以变化为另外一个字符串,操作方式包括:删除、添加、修改。删除和添加是自反的,即edit(i-1,j)+1或者edit(i,j-1)+1。后面的加1就是修改和添加的操作代价,修改是edit(i-1,j-1)+(0|1)。后面的加0或者加1是需要看第一个字符串的第i个字符和第二个字符串的第j个字符是否相等,相等就是不需要修改,所以加0,不相等就需要进行一步修改,需要加1.

具体的代码为

public class BiJiJuli {

public static void main(String[] args){
System.out.println(editInstance("ergabd","abc"));
}

private static int min(int a,int b){
return a < b ? a : b;
}

private static int editInstance(String str1, String str2){

int max1 = str1.length();
int max2 = str2.length();

int[][] matrix = new int[max1+1][max2+1];

for( int i=0;i<max1+1;i++){
matrix[i][0] = i;
}
for(int i = 0;i<max2+1;i++){
matrix[0][i] = i;
}

for(int i=1;i<max1+1;i++){
for(int j=1;j<max2+1;j++){
int d = 1;
int temp = min(matrix[i-1][j]+1,matrix[i][j-1]+1);
if(str1.substring(i-1, i).equals(str2.substring(j-1,j))){
d = 0;
}
matrix[i][j] = min(temp,matrix[i-1][j-1]+d);
}
}
return matrix[max1][max2];
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: