栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Damerau-Levenshtein距离实现

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Damerau-Levenshtein距离实现

要点@doukremt给出了:https
://gist.github.com/doukremt/9473228

在Javascript中提供以下内容。

您可以在加权对象中更改操作的权重。

var levenshteinWeighted= function(seq1,seq2){    var len1=seq1.length;    var len2=seq2.length;    var i, j;    var dist;    var ic, dc, rc;    var last, old, column;    var weighter={        insert:function(c) { return 1.; },        delete:function(c) { return 0.5; },        replace:function(c, d) { return 0.3; }    };        if (len1 == 0 || len2 == 0) {        dist = 0;        while (len1) dist += weighter.delete(seq1[--len1]);        while (len2) dist += weighter.insert(seq2[--len2]);        return dist;    }    column = []; // malloc((len2 + 1) * sizeof(double));    //if (!column) return -1;    column[0] = 0;    for (j = 1; j <= len2; ++j)        column[j] = column[j - 1] + weighter.insert(seq2[j - 1]);    for (i = 1; i <= len1; ++i) {        last = column[0];         column[0] += weighter.delete(seq1[i - 1]);         for (j = 1; j <= len2; ++j) { old = column[j]; if (seq1[i - 1] == seq2[j - 1]) {     column[j] = last;  } else {     ic = column[j - 1] + weighter.insert(seq2[j - 1]);           dc = column[j] + weighter.delete(seq1[i - 1]);               rc = last + weighter.replace(seq1[i - 1], seq2[j - 1]);      column[j] = ic < dc ? ic : (dc < rc ? dc : rc); } last = old;        }    }    dist = column[len2];    return dist;}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/616988.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号