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

相似度的算法(编辑距离法)(Java实现代码)

2017-02-16 17:17 309 查看
public class Suanfa {

public static void main(String[] args) {

String Str_1="abcdefghijklmuvwxyz";
String Str_2="ijkabclmdefghpq";
//length
int Length1=Str_1.length();
int Length2=Str_2.length();

int Distance=0;
if (Length1==0) {
Distance=Length2;
}
if(Length2==0)
{
Distance=Length1;
}
if(Length1!=0&&Length2!=0){
int[][] Distance_Matrix=new int[Length1+1][Length2+1];
//编号
int Bianhao=0;
for (int i = 0; i <= Length1; i++) {
Distance_Matrix[i][0]=Bianhao;
Bianhao++;
}
Bianhao=0;
for (int i = 0; i <=Length2; i++) {
Distance_Matrix[0][i]=Bianhao;
Bianhao++;
}

char[] Str_1_CharArray=Str_1.toCharArray();
char[] Str_2_CharArray=Str_2.toCharArray();

for (int i = 1; i <= Length1; i++) {
for(int j=1;j<=Length2;j++){
if(Str_1_CharArray[i-1]==Str_2_CharArray[j-1]){
Distance=0;
}
else{
Distance=1;
}

int Temp1=Distance_Matrix[i-1][j]+1;
int Temp2=Distance_Matrix[i][j-1]+1;
int Temp3=Distance_Matrix[i-1][j-1]+Distance;

Distance_Matrix[i][j]=Temp1>Temp2?Temp2:Temp1;
Distance_Matrix[i][j]=Distance_Matrix[i][j]>Temp3?Temp3:Distance_Matrix[i][j];

}

}

Distance=Distance_Matrix[Length1][Length2];
}

double Aerfa=1-1.0*Distance/(Length1>Length2?Length1:Length2);
System.out.println(Aerfa);
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息