【Algorithm】字符串编辑距离(Levenshtein距离)C++算法实现
算法实现比较简单,但算法原理不明白,有空了再研究一下。
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++算法实现的更多相关文章
- 字符串编辑距离(Levenshtein距离)算法
基本介绍 Levenshtein距离是一种计算两个字符串间的差异程度的字符串度量(string metric).我们可以认为Levenshtein距离就是从一个字符串修改到另一个字符串时,其中编辑单个 ...
- 扒一扒编辑距离(Levenshtein Distance)算法
最近由于工作需要,接触了编辑距离(Levenshtein Distance)算法.赶脚很有意思.最初百度了一些文章,但讲的都不是很好,读起来感觉似懂非懂.最后还是用google找到了一些资料才慢慢理解 ...
- 51nod 1183 - 编辑距离 - [简单DP][编辑距离问题][Levenshtein距离问题]
题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1183 编辑距离,又称Levenshtein距离(也叫做Edi ...
- 动态规划 001 - 编辑距离(Levenshtein Distance)问题
问题 字符串的编辑距离也被称为距Levenshtein距离(Levenshtein Distance),属于经典算法,常用方法使用递归,更好的方法是使用动态规划算法,以避免出现重叠子问题的反复计算,减 ...
- 字符串编辑距离(Edit Distance)
一.问题描述定义字符串编辑距离(Edit Distance),是俄罗斯科学家 Vladimir Levenshtein 在 1965 年提出的概念,又称 Levenshtein 距离,是指两个字符串之 ...
- Lucene的FuzzyQuery中用到的Levenshtein Distance(LD)算法
2019独角兽企业重金招聘Python工程师标准>>> Lucene的FuzzyQuery中用到的Levenshtein Distance(LD)算法 博客分类: java 搜索引擎 ...
- Spark Java API 计算 Levenshtein 距离
Spark Java API 计算 Levenshtein 距离 在上一篇文章中,完成了Spark开发环境的搭建,最终的目标是对用户昵称信息做聚类分析,找出违规的昵称.聚类分析需要一个距离,用来衡量两 ...
- C语言多种方法求解字符串编辑距离问题的代码
把做工程过程经常用的内容记录起来,如下内容段是关于C语言多种方法求解字符串编辑距离问题的内容. { if(xbeg > xend) { if(ybeg > yend) return 0; ...
- ipv4 ipv6 求字符串和整数一一映射的算法 AmazonOrderId
字符串和整数一一映射的算法 公司每人的英文名不同,现在给每个英文名一个不同的数字编号,怎么设计? 走ipv4/6 2/32 2/128就够了,把“网段”概念对应到“表或库”,ip有a_e5类,这概念 ...
随机推荐
- HAProxy原理和配置
HAProxy原理和配置 目录 1.HAProxy简介 2.haproxy安装和配置说明 proxies配置参数 bind配置 Balance配置 基于cookie的会话绑定 统计接口启用相关的参数 ...
- 学习小片段——springboot 错误处理
一:先看看springboot默认的错误处理机制 springboot默认会判断是否是浏览器(http请求头Accept是否含有 text/html)来选择返回html错误页面或json错误信息 原因 ...
- HashMap(1.8)理解
先放一个流程图了解一下HashMap的put()操作: 1.HashMap底层采用数组.链表.红黑树来实现. 2.表的长度一定是2^n(便于快速计算hash值和扩展),若初始化时指定容量不满足,则Ha ...
- Applets的分析
一.有关Java Applet的基础 1.JavaApplet就是用Java语言编写的小应用程序,可以直接嵌入到网页中,并能够产生特殊的效果.包含Applet的网页被称为Java-powered页,可 ...
- 两个action之间进行跳转
名字 说明 Chain 用来处理Action链 Dispatcher 用来转向页面,通常处理JSP FreeMarker 处理FreeMarker模板 HttpHeader 用来控制特殊的Http行为 ...
- AutomaticReferenceCounting.html#runtime-support
https://clang.llvm.org/docs/AutomaticReferenceCounting.html#runtime-support Runtime support This sec ...
- sqlite比较时间起始1天的0点
当天时间的0:00:00 strftime('%Y-%m-%d %H:%M:%S','now','localtime','start of day')
- HBase原理和设计
转载 2016年1月10日:http://www.sysdb.cn/index.php/2016/01/10/hbase_principle/ 简介 架构 数据组织 原理 RS定位 region写入 ...
- 2018下C语言基础课第1次作业
准备工作(20分) 1.在博客园申请个人博客,以真实姓名和学号加入班级博客(1班班级博客链接地址)(2班班级博客链接地址) 2.关注邹欣老师博客.关注任课老师博客,关注助教老师 3.加入讨论小组,学习 ...
- 浏览器h5新建文件 保存到本地(相当于浏览器写文件)
function doSave(value, type, name) { var blob; if (typeof window.Blob == "funct ...