LintCode-编辑距离
2015-06-27 16:48
495 查看
给出两个单词word1和word2,计算出将word1 转换为word2的最少操作次数。
你总共三种操作方法:
插入一个字符
删除一个字符
替换一个字符
您在真实的面试中是否遇到过这个题?
Yes
样例
给出 work1="mart" 和 work2="karma"
返回 3
标签 Expand
相关题目 Expand
分析:经典的动态规划面试题,在有道的实习面中遇到过,用dp[i][j]表示第一个字符串到i第二个字符串到j的时候需要进行多少次修改。
代码:
你总共三种操作方法:
插入一个字符
删除一个字符
替换一个字符
您在真实的面试中是否遇到过这个题?
Yes
样例
给出 work1="mart" 和 work2="karma"
返回 3
标签 Expand
相关题目 Expand
分析:经典的动态规划面试题,在有道的实习面中遇到过,用dp[i][j]表示第一个字符串到i第二个字符串到j的时候需要进行多少次修改。
代码:
class Solution { public: /** * @param word1 & word2: Two string. * @return: The minimum number of steps. */ int minDistance(string word1, string word2) { // write your code here int n = word1.length(); int m = word2.length(); vector<vector<int> > dp(n+1,vector<int>(m+1,0)); for(int i = 1;i<=n;i++) dp[i][0]=i; for(int i=1;i<=m;i++) dp[0][i]=i; for(int i=1;i<=n;i++) { char c1 = word1[i-1]; for(int j=1;j<=m;j++) { char c2 = word2[j-1]; if(c1==c2) dp[i][j] = dp[i-1][j-1]; else dp[i][j] = min(dp[i-1][j],min(dp[i][j-1],dp[i-1][j-1]))+1; } } return dp [m]; } };
相关文章推荐
- HTTP协议
- ENode框架Conference案例分析系列之 - Quick Start
- 最长上升子序列
- 【华为oj】矩阵乘法
- Java、jsp、JavaScript的三者的区别与联系
- AngularJS中的provider,factory,service方法
- neo4j介绍
- C++ 移位运算 浅析
- 【SPOJ TSUM】Triple Sums(FFT+容斥定理)
- android JBOX2D粒子碰撞的实例,以达到特殊效果
- 使用View.inflate时root为空导致外层布局width和height失效
- CentOS 6.6 yum 搭建LAMP环境
- C# 导出word文档及批量导出word文档(1)
- libsvm3.11+3.20安装
- cocos2dx 场景间正向反向传
- 高德地图笔记(持续更新)
- 初来乍到,便困难重重(机房收费)
- linux grep命令详解
- 微信智能硬件之第一个servlet创建
- android判断当前网络状态及跳转到设置界面