编辑距离(Edit Distance | Levenshtein距离)
- - CSDN博客互联网推荐文章编辑距离又称为Levenshtein距离,是指两个字符串之间,从一个字符串变成另一个字符串所需要的 最小编辑操作次数. 可以采用的编辑操作包括: 插入操作、替换操作和删除操作. 例如:字符串“a“ 与字符串 ”b“的编辑距离为1,只有一个替换操作. 将”kitten一字转成“sitting”的编辑距离为3:.
public static int getEditDistance(String strA,String strB){
int lenA=strA.length();
int lenB=strB.length();
int[][] dp=new int[lenA+1][lenB+1];
int i,j;
for(i=0;i<lenA;i++){
dp[i][0]=i;
}
for(j=0;j<lenB;++j){
dp[0][j]=j;
}
for(i=0;i<lenA;++i){
char c1=strA.charAt[i];
for(j=0;j<lenB;++j){
char c2=strB.charAt[j];
if(c1==c2)
dp[i+1][j+1]=dp[i][j];
else{
int replaceTemp=dp[i][j]+1;
int insertTemp=dp[i+1][j]+1;
int deleteTemp=dp[i][j+1]+1;
dp[i+1][j+1]=getMin(replaceTemp,insertTemp,deleteTemp);
}
}
}
return dp[lenA][lenB];
}
public static int getMin(int a,int b,int c){
int min=a>b?b:a;
return (c>min?min:c)
}