字符串编辑距离的计算方法
字符串编辑距离,又称
Levenshtein距离,
指由一个字符串变成另一个字符串所需的最少的编辑次数,这些编辑操作包括将一个字符替换为另一个字符,删除一个字符和添加一个字。
详细内容可以参考
http://en.wikipedia.org/wiki/Levenshtein_distance
则C++代码实现为:
int minimum(int a,int b,int c)
{return min(a,min(b,c));
}
int LevenshteinDistance(const char* s, int len_s, const char* t, int len_t)
{/* base case: empty strings */if (len_s == 0) return len_t;if (len_t == 0) return len_s;int cost = 0;/* test if last characters of the strings match */if (s[len_s-1] == t[len_t-1])cost = 0;elsecost = 1;/* return minimum of delete char from s, delete char from t, and delete char from both */return minimum(LevenshteinDistance(s, len_s - 1, t, len_t ) + 1,LevenshteinDistance(s, len_s , t, len_t - 1) + 1,LevenshteinDistance(s, len_s - 1, t, len_t - 1) + cost);
}
比如由字符串aabab转换成字符串baab通过上面的代码技术得到结果为2.
具体步骤是
第一步,将第一个a替换成b。
第二步,将第二个b删除。
如图所示
字符串编辑距离的计算方法相关推荐
- 字符串编辑距离(Edit Distance)
一.问题描述 定义 字符串编辑距离(Edit Distance),是俄罗斯科学家 Vladimir Levenshtein 在 1965 年提出的概念,又称 Levenshtein 距离,是指两个字符 ...
- 最大子序列、最长递增子序列、最长公共子串、最长公共子序列、字符串编辑距离
最大子序列 最大子序列是要找出由数组成的一维数组中和最大的连续子序列.比如{5,-3,4,2}的最大子序列就是 {5,-3,4,2},它的和是8,达到最大:而 {5,-6,4,2}的最大子序列是{4, ...
- Algorithm:C++/python语言实现之求旋转数组最小值、求零子数组、求最长公共子序列和最长公共子串、求LCS与字符串编辑距离
Algorithm:C++/python语言实现之求旋转数组最小值.求零子数组.求最长公共子序列和最长公共子串.求LCS与字符串编辑距离 目录 一.求旋转数组最小值 1.分析问题 2.解决思路 二.求 ...
- JavaScript实现levenshteinDistance字符串编辑距离算法(附完整源码)
JavaScript实现levenshteinDistance字符串编辑距离算法(附完整源码) levenshteinDistance.js完整源代码 # levenshteinDistance.te ...
- 动态规划 —— 线性 DP —— 字符串编辑距离
[概述] 字符串编辑距离,即 Levenshtein 距离,是俄国科学家 Vladimir Levenshtein 提出的概念,是指从一个字符串修改到另一个字符串时,编辑单个字符所需的最少次数,编辑单 ...
- 数组字符串那些经典算法:最大子序列和,最长递增子序列,最长公共子串,最长公共子序列,字符串编辑距离,最长不重复子串,最长回文子串 (转)...
作者:寒小阳 时间:2013年9月. 出处:http://blog.csdn.net/han_xiaoyang/article/details/11969497. 声明:版权所有,转载请注明出处,谢谢 ...
- 字符串编辑距离(转载)
Levenshtein Distance (LD, 来文史特距离)也叫edit distance(编辑距离),它用来表示2个字符串的相似度,LD定义为需要最少多少步基本操作才能让2个字符串相等,基本操 ...
- 字符串编辑距离之JaroWinklerDistance
概述 Jaro-Winkler Distance是一个度量两个字符序列之间的编辑距离的字符串度量标准,是由William E. Winkler在1990年提出的Jaro Distance度量标准的一种 ...
- 字符串编辑距离之Damerau–Levenshtein Distance
概述 Damerau–Levenshtein Distance用来测量两个字符序列之间的编辑距离的字符串度量标准.两个词的Damerau–Levenshtein Distance是从一个词转换为另一个 ...
最新文章
- react 快速上手开发_React中测试驱动开发的快速指南
- R语言difftime函数计算时间差值实战
- Ubuntu10下MySQL搭建Amoeba_读写分离
- linux nfs acl 特定ip,技术|RHCSA 系列(七): 使用 ACL(访问控制列表) 和挂载 Samba/NFS 共享...
- CSS3笔记之基础篇(一)边框
- tostring 16进制_ToString:身份哈希码的十六进制表示形式
- mysql动态标签可以嵌套吗_Mysql动态嵌套游标
- 图形学之空间坐标变化之三维图形观察及变换
- 【IDEA】IDEA 下 maven 一个诡异问题,一个正常项目 过了一夜 依赖很多 飘红
- Linux学习总结(39)——系统管理员应该知道的 20 条 Linux 命令
- 面向对象编程(三):重载运算符和重载函数
- PHP中普通类、抽象类、接口之间的关联
- MODBUS ASCII协议和RTU协议的比较 -----和利时PLC采用Modbus RTU
- 安装无线网卡后,显示网络电缆被拔出?
- Springboot—JpaRepository—【duplicate entry for key 】
- moment.js时间操作
- R语言并行计算beta-NTI值
- 使用吉特哈布Codespaces和Visual Studio Code进行C++开发
- 编写一个用于字符串比较的函数
- 计算机专业择偶标准,爱情句子:说来说去我的择偶标准也就一个字——你
热门文章
- 鼓浪屿天气预报软件测试,厦门鼓浪屿天气预报15天
- java udp 多播 广播_Java UDP 广播与多播
- iis mysql php 附件上传大小_修改上传附件2M大小限制的方法/php+iis上传附件默认大小修改方法...
- c++ string类
- python异步写文件_结合异步http请求将数据写入文件
- 文巾解题 46. 全排列
- 深度学习核心技术精讲100篇(三十一)-大众点评搜索基于知识图谱的深度学习排序实践
- 用Tableau画可调整的树状图(Tree Diagram)
- 非常值得收藏的 IBM SPSS Modeler 算法简介
- mapreduce编程实例(4)-求中位数和标准差