Edit Distance
来源:互联网 发布:淘宝卓富尼鞋 编辑:程序博客网 时间:2024/06/10 11:29
题目:Given two words word1 and word2, find the minimum number of steps required to convert word1 to word2. (each operation is counted as 1 step.)
You have the following 3 operations permitted on a word:
a) Insert a character
b) Delete a character
c) Replace a character
思路:
f[i][j]代表word1[0...i]->word2[0...j]的步数;
f[i-1][j] -- 删除操作
f[i-1][j-1] -- 相等操作
f[i-1][j-1] +1 -- 替换操作
f[i][j-1] -- 插入操作
代码:
class Solution {public://https://leetcode.com/problems/edit-distance///http://blog.163.com/gjx_12358@126/blog/static/895363452014232191498///讲解非常详细。 int minDistance(string word1, string word2) { int row=word1.length()+1; int col=word2.length()+1; //为了初始化,从0到某个值一直就为某个值,见下面的初始化 vector<vector <int> > f(row,vector<int>(col)); //vector<vector <int> > f(row,vector<int>(col)); for(int i=0;i<row;i++) f[i][0]=i; for(int i=0;i<col;i++) f[0][i]=i; //初始化完毕 for(int i=1;i<row;i++){ for(int j=1;j<col;j++){ //如果相等 if(word1[i-1]==word2[j-1]) f[i][j]=f[i-1][j-1]; else{ f[i][j]=f[i-1][j-1]+1;//替换的情况 } //真正开始比较的时候 f[i][j]=min(f[i][j],min(f[i][j-1]+1,f[i-1][j]+1)); //删除 插入 刚刚的替换 } } return f[row-1][col-1]; }};
0 0
- edit distance
- Edit Distance
- edit distance
- Edit Distance
- Edit Distance
- Edit Distance
- Edit Distance
- Edit Distance
- Edit Distance
- Edit Distance
- Edit Distance
- Edit Distance
- Edit Distance
- Edit Distance
- Edit Distance
- Edit Distance
- Edit Distance
- Edit Distance
- win+home纵然是快捷键……
- Android性能优化之内存篇
- Android -Camer使用!
- 结构的嵌套
- 例题 6-12 油田 UVa 572 用dfs求连通块
- Edit Distance
- 用栈实现大数加法
- eclipse简单配置struct2 HelloWorld
- iOS UIImageRenderingMode
- 文章标题
- cl命令编译
- android自动化测试——monkey(2)
- 计算机中树的优点与重要性
- 第三周 项目3-求集合并集