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程序设计有所帮助。