Levenshtein 距离的nodejs实现

var math = require('math');

function twoDimensionalArray(xMax, yMax) {
var arr = new Array()
for (var i=0; i<xMax; i++) {
arr[i] = new Array();
for (var j=0; j<yMax; j++) {
arr[i][j] = i + j;
}
}
return arr;
}

var str1 = '我是一个人';
var str2 = '我是一个好人';
str1_length = str1.length;
str2_length = str2.length;

console.log(str1_length);
console.log(str2_length);

var arr = twoDimensionalArray(str1_length+1, str2_length+1);
//console.log(arr);

var temp = null;

for (var i = 1; i <= str1_length; i++) {

for (var  j = 1; j <= str2_length; j++) {  
    if (str1.charAt(i - 1) == str2.charAt(j - 1)) {  
        temp = 0;  
    } else {  
        temp = 1;  
    }  
    
    //console.log(arr[i - 1][j - 1] + temp);
    //console.log(j);
    //console.log(arr[i][j - 1] + 1);
    //console.log(arr[i - 1][j] + 1);
    arr[i][j] = math.min(arr[i - 1][j - 1] + temp, arr[i][j - 1] + 1,  arr[i - 1][j] + 1);  


}  

}

var similarity =1 - arr[str1_length][str2_length] / math.max(str1_length, str2_length);

console.log(similarity);

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容