编辑距离算法其实就是,在规定的编辑操作(替换字符串、插入字符串、删除字符串)中java字符串相似度算法 java实现编辑距离算法(levenshtein distance),经过几步可以把一个字符串变成另一个字符串,而这个所需的步数就是你的编辑距离。
测试样例:
str1 = abc
str2 = yabd
表里的每一个值都代表着将str1转换成str2所需要的步数java字符串相似度算法,每个单元格的值都遵循这样一个规律,第一行和第一列都是从0到n;其他的值要分情况计算,行索引和列索引对比大小,相同的话直接取左上方单元格的值,不同的话对比其左上方、左边、上边,找到三个单元格之中的最小值再加1即这个单元格的值。
str1 abc
str2
0123
y1123
a2123
b3212
d4332
最后一个单元格的值就是两个字符串间不同字符的个数java字符串相似度算法,利用这个数与两个字符串中最长的长度相除就得到了不相似的程度,再用1减去就是相似率。
<p><pre class="cm-s-default" style="color:rgb( 89 , 89 , 89 );margin:0px;padding:0px;background:none 0% 0% / auto repeat scroll padding-box border-box rgba( 0 , 0 , 0 , 0 )">public class FileCompared {
public static void main(String[] args) {
String str1 = "ABCDEFGZ";
String str2 = "ABFDFEGXY";
System.out.println("两个字符串的相似率为:" + similarRates(str1,str2) +"%");
}
//定义一个similarRates方法获取两个字符串间不同字符的个数并求出两个字符串的相似率
public static int similarRates(String str1 , String str2){
//确定二维距离表distance的维度
int str1Len = str1.length();
int str2Len = str2.length();
//如果一个字符串的内容为空就返回另一个字符串的长度
if (str1Len == 0) return str2Len;
if (str2Len == 0) return str1Len;
//定义一张二维距离表distance
int[][] distance = new int[str1Len + 1][str2Len + 1];
//给二维数组的第一行第一列赋值
int maxLen = str1Len > str2Len ? str1Len : str2Len;
for (int num = 0; num < maxLen + 1; num++){
if (num