【转】字符串编辑距离
原文:http://m.blog.csdn.net/blog/cqs_2012/17849877
- 题目
有两个字符串A和B,对A可以进行如下的操作:插入一个字符,删除一个字符,替换一个字符。问A可以通过最少多少次操作变为B?我们定义这个结果为字符串的最小编辑距离。
- 思路(借鉴九章算法的,感觉挺好,所以实现,共同学习)
字符串编辑距离归为DP题目,所以还是超好的
1 for(int i = 0;i<int(b.size()+1);i++) 2 dp[i] = new int[a.size()+1]; 3 for(int i = 0; i<int(a.size()+1);i++) 4 dp[0][i] = i; 5 for(int i = 1; i<int(b.size()+1);i++) 6 dp[i][0] = i; 7 for(int i = 1; i<int(b.size()+1);i++) 8 for(int j=1; j<int(a.size()+1);j++) 9 if( a[j-1] != b[i-1] ) 10 dp[i][j] = min (dp[i-1][j],dp[i][j-1],dp[i-1][j-1])+1; 11 else 12 dp[i][j] = min (dp[i-1][j]+1,dp[i][j-1]+1,dp[i-1][j-1]); 13 return dp[b.size()][a.size()];
- 实验
- 代码
1 #include<iostream> 2 #include<string> 3 using namespace std; 4 5 // get the minest number of three numbers 6 int min(int a,int b,int c); 7 8 // get the minest distance of string a and b 9 int zifuchuan_bianji_juli(string a,string b); 10 11 12 int main() 13 { 14 string a,b; 15 cout<<"please input string a and b"<<endl; 16 cin>>a>>b; 17 cout<<"a=\""<<a<<"\",b=\""<<b<<"\""<<endl; 18 cout<<"字符串距离为: "<<zifuchuan_bianji_juli(a,b)<<endl; 19 system("pause"); 20 return 0; 21 } 22 23 int zifuchuan_bianji_juli(string a,string b) 24 { 25 if( a.empty() ) 26 return int( b.size() ); 27 else if( b.empty()) 28 return int( a.size() ) ; 29 30 int ** dp = new int*[ b.size()+1 ]; 31 for(int i = 0;i<int(b.size()+1);i++) 32 dp[i] = new int[a.size()+1]; 33 for(int i = 0; i<int(a.size()+1);i++) 34 dp[0][i] = i; 35 for(int i = 1; i<int(b.size()+1);i++) 36 dp[i][0] = i; 37 for(int i = 1; i<int(b.size()+1);i++) 38 for(int j=1; j<int(a.size()+1);j++) 39 if( a[j-1] != b[i-1] ) 40 dp[i][j] = min (dp[i-1][j],dp[i][j-1],dp[i-1][j-1])+1; 41 else 42 dp[i][j] = min (dp[i-1][j]+1,dp[i][j-1]+1,dp[i-1][j-1]); 43 return dp[b.size()][a.size()]; 44 } 45 46 int min(int a,int b,int c) 47 { 48 if(a>b) 49 { 50 if(b>c) 51 return c; 52 else return b; 53 }else if(a>c) 54 return c; 55 else return a; 56 }
转载于:https://www.cnblogs.com/Sky-Yanjun/p/4971125.html
【转】字符串编辑距离相关推荐
- 字符串编辑距离(Edit Distance)
一.问题描述 定义 字符串编辑距离(Edit Distance),是俄罗斯科学家 Vladimir Levenshtein 在 1965 年提出的概念,又称 Levenshtein 距离,是指两个字符 ...
- 最大子序列、最长递增子序列、最长公共子串、最长公共子序列、字符串编辑距离
最大子序列 最大子序列是要找出由数组成的一维数组中和最大的连续子序列.比如{5,-3,4,2}的最大子序列就是 {5,-3,4,2},它的和是8,达到最大:而 {5,-6,4,2}的最大子序列是{4, ...
- 字符串编辑距离的计算方法
字符串编辑距离,又称 Levenshtein距离, 指由一个字符串变成另一个字符串所需的最少的编辑次数,这些编辑操作包括将一个字符替换为另一个字符,删除一个字符和添加一个字. 详细内容可以参考 ...
- 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是从一个词转换为另一个 ...
最新文章
- Cassandra安装测试
- python【数据结构与算法】棋盘覆盖问题
- vi 编辑器基本使用
- 特别的520,送给特别的你们,还不来看看?
- 类路径是什么意思_多播是什么意思 多播介绍【详解】
- ASP.NET跨页面传值技巧
- uat环境是什么环境_环境污染会对环境造成怎样的损害?污水处理活性炭能起到什么效果呢?...
- Android平台类加载流程源码分析
- java 搭建企业应用框架_java培训一般要学多久
- 【VB.NET】VB.NET窗体与控件问题的解答
- excel表中怎么插入visio_Excel工作表中的排序,你真的掌握吗?10张动图带你了解!...
- 再见!热血活力的深圳
- 文件删除后未释放磁盘
- optuna自动调参框架对lgb的超参进行优化
- 【NOIP模拟】夕阳
- ASP.NET编写一个简易网站
- 茶馆人物表(按字母顺序)
- 江苏“同心圆”工程为银发投资安全设“保护圈”
- 头牌知产介绍速冻水饺商标属于哪一类
- SD-WAN 与传统 WAN