编辑距离(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) }