代码改变世界

比较两个字符串的相似度

2018-02-27 14:35  ET.frog  阅读(7408)  评论(0编辑  收藏  举报

关于多个文本字符串的去重, 需要比较两个字符串的相似度

两个字符串相似度的比较,return 0-1

``` function string_same(str1, str2){ //计算两个字符串的长度。 var len1 = str1.length, len2 = str2.length, dif = [],//建立上面说的数组,比字符长度大一个空间 temp,i,j,a; //赋初值,步骤B for (a = 0; a <= len1; a++) { dif[a] = []; dif[a][0] = a; } for (a = 0; a <= len2; a++) { dif[0][a] = a; } //计算两个字符是否一样,计算左上的值 //var temp; for (i = 1; i <= len1; i++) { for (j = 1; j <= len2; j++) { if (str1[i - 1] == str2[j - 1]) { temp = 0; } else { temp = 1; } dif[i][j] = Math.min(dif[i - 1][j - 1] + temp,dif[i][j - 1] + 1,dif[i - 1][j] + 1); } } //console.log("差异步骤:" + dif[len1][len2]); //计算相似度 //var similarity = 1 - dif[len1][len2] / Math.max(str1.length, str2.length); return 1 - dif[len1][len2] / Math.max(len1, len2); } ```

两个字符串相似度的比较,比较过程中包含标点,位置,长度。返回一个小数为两个字符串的相似度。