java字符串相似度算法
本文实例讲述了java字符串相似度算法。分享给大家供大家参考。具体实现方法如下:
publicclassLevenshtein{
privateintcompare(Stringstr,Stringtarget){
intd[][];//矩阵
intn=str.length();
intm=target.length();
inti;//遍历str的
intj;//遍历target的
charch1;//str的
charch2;//target的
inttemp;//记录相同字符,在某个矩阵位置值的增量,不是0就是1
if(n==0){
returnm;
}
if(m==0){
returnn;
}
d=newint[n+1][m+1];
for(i=0;i<=n;i++){//初始化第一列
d[i][0]=i;
}
for(j=0;j<=m;j++){//初始化第一行
d[0][j]=j;
}
for(i=1;i<=n;i++){//遍历str
ch1=str.charAt(i-1);
//去匹配target
for(j=1;j<=m;j++){
ch2=target.charAt(j-1);
if(ch1==ch2){
temp=0;
}else{
temp=1;
}
//左边+1,上边+1,左上角+temp取最小
d[i][j]=min(d[i-1][j]+1,d[i][j-1]+1,d[i-1][j-1]+temp);
}
}
returnd[n][m];
}
privateintmin(intone,inttwo,intthree){
return(one=one<two?one:two)<three?one:three;
}
/**
*获取两字符串的相似度
*
*@paramstr
*@paramtarget
*
*@return
*/
publicfloatgetSimilarityRatio(Stringstr,Stringtarget){
return1-(float)compare(str,target)/Math.max(str.length(),target.length());
}
publicstaticvoidmain(String[]args){
Levenshteinlt=newLevenshtein();
Stringstr="ab";
Stringtarget="ac";
System.out.println("similarityRatio="+lt.getSimilarityRatio(str,target));
}
}
希望本文所述对大家的Java程序设计有所帮助。