算法实现比较简单,但算法原理不明白,有空了再研究一下。

unsigned LevenshteinDistance(const string& s1, const string& s2)
{
if (s1.empty()) {
return (unsigned)s2.size();
} if (s2.empty()) {
return (unsigned)s1.size();
} unsigned row = (unsigned)s1.size() + 1;
unsigned col = (unsigned)s2.size() + 1; auto_ptr<unsigned> apBuf(new unsigned[row * col]); unsigned* pBuf = apBuf.get(); for (unsigned i=0; i < row; ++i) {
pBuf[i * col] = i;
} for (unsigned i=0; i < col; ++i) {
pBuf[i] = i;
} for (unsigned i=1; i < row; ++i) {
for (unsigned j = 1; j < col; ++j) { unsigned temp = (s1[i-1] == s2[j-1]) ? 0 : 1; pBuf[i * col + j] = min( min( pBuf[(i-1) * col + j] + 1, pBuf[i * col + j - 1] + 1 ), (pBuf[(i -1 ) * col + j - 1] + temp) );
}
} // dump buf
for (unsigned i=0; i < row; ++i) {
for (unsigned j= 0; j < col; ++j) {
cout << pBuf[i * col + j] << " ";
}
cout << endl;
} return pBuf[row * col - 1];
}

【Algorithm】字符串编辑距离(Levenshtein距离)C++算法实现的更多相关文章

  1. 字符串编辑距离(Levenshtein距离)算法

    基本介绍 Levenshtein距离是一种计算两个字符串间的差异程度的字符串度量(string metric).我们可以认为Levenshtein距离就是从一个字符串修改到另一个字符串时,其中编辑单个 ...

  2. 扒一扒编辑距离(Levenshtein Distance)算法

    最近由于工作需要,接触了编辑距离(Levenshtein Distance)算法.赶脚很有意思.最初百度了一些文章,但讲的都不是很好,读起来感觉似懂非懂.最后还是用google找到了一些资料才慢慢理解 ...

  3. 51nod 1183 - 编辑距离 - [简单DP][编辑距离问题][Levenshtein距离问题]

    题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1183 编辑距离,又称Levenshtein距离(也叫做Edi ...

  4. 动态规划 001 - 编辑距离(Levenshtein Distance)问题

    问题 字符串的编辑距离也被称为距Levenshtein距离(Levenshtein Distance),属于经典算法,常用方法使用递归,更好的方法是使用动态规划算法,以避免出现重叠子问题的反复计算,减 ...

  5. 字符串编辑距离(Edit Distance)

    一.问题描述定义字符串编辑距离(Edit Distance),是俄罗斯科学家 Vladimir Levenshtein 在 1965 年提出的概念,又称 Levenshtein 距离,是指两个字符串之 ...

  6. Lucene的FuzzyQuery中用到的Levenshtein Distance(LD)算法

    2019独角兽企业重金招聘Python工程师标准>>> Lucene的FuzzyQuery中用到的Levenshtein Distance(LD)算法 博客分类: java 搜索引擎 ...

  7. Spark Java API 计算 Levenshtein 距离

    Spark Java API 计算 Levenshtein 距离 在上一篇文章中,完成了Spark开发环境的搭建,最终的目标是对用户昵称信息做聚类分析,找出违规的昵称.聚类分析需要一个距离,用来衡量两 ...

  8. C语言多种方法求解字符串编辑距离问题的代码

    把做工程过程经常用的内容记录起来,如下内容段是关于C语言多种方法求解字符串编辑距离问题的内容. { if(xbeg > xend) { if(ybeg > yend) return 0; ...

  9. ipv4 ipv6 求字符串和整数一一映射的算法 AmazonOrderId

    字符串和整数一一映射的算法 公司每人的英文名不同,现在给每个英文名一个不同的数字编号,怎么设计? 走ipv4/6  2/32 2/128就够了,把“网段”概念对应到“表或库”,ip有a_e5类,这概念 ...

随机推荐

  1. java多态——基础

    多态 定义: 一个接口,多种实现,就是多种状态     价值: 特点:多态存在的特点,就是必须要有继承.覆盖.父类变量调用子类对象 场景: 首先检查父类中是否有该方法,如果没有,则编译错误:如果有,则 ...

  2. vue项目中如何使用less

    首先你的vue-cli下载完成 第一步   安装less-loader  依赖 npm  install  less less-loader  --save-dev 直接自动就配置上了,不用手动配置 ...

  3. nginx 带? rewrite 规则

    由于需要重定向 url ,nginx需要rewrite .参考文献 http://huangqiqing123.iteye.com/blog/2083434 需求:将http://10.106.1.3 ...

  4. Delphi7连接MySql数据库-DBGrid控件显示数据

    一个简单的Delphi7小程序,使用MySql数据库做简单查询,用DBGrid控件显示结果,实现过程如下: (1)在MySql中新建demouser表,插入记录用于测试. (2)在Delphi7中新建 ...

  5. Docker 部署应用过程记录

    Kibana直接部署到centos中,老是没有任何征兆退出,今天将他移动到docker中部署,以下是部署的过程,做个记录防止忘记 1.安装Docker # yum install docker 2.启 ...

  6. eclipse 中git无法https下载提交代码

    使用eclipse下载github代码时,报错信息为cannot open git-upload-pack,如下图: 其实就是ssl协议的版本不对, 2018年2月8日后禁止通过TLSv1.1协议连接 ...

  7. linux中mysql配置文件和jdk环境变量

    mysql配置文件 [client]default-character-set = utf8mb4 [mysql]socket = /var/lib/mysql/mysql.sockdefault-c ...

  8. vue 图片加载失败调用

    <img :src="bak" @error="imgLoadError()" alt="bak"> data(){ retur ...

  9. Navicat 连接MySQL时出现1251错误的解决方案

    我用的MySQL版本是8.0.11,比较新的MySQL版本中采用的加密方式与旧的不同,从而导致1251错误. 解决方案:打开终端连接上数据库,执行以下语句,问题解决.(自己遇到过的坑,亲测有效) US ...

  10. .singleton.php 文件 (单例模式可被继承 代码实例)

    <?phpnamespace lib;abstract class Singleton{ //设置一个私有的静态属性作为中间变量 private static $instancePool = [ ...