您的位置:首页 > 其它

LintCode-编辑距离

2015-06-27 16:48 495 查看
给出两个单词word1和word2,计算出将word1 转换为word2的最少操作次数。
你总共三种操作方法:

插入一个字符
删除一个字符
替换一个字符

您在真实的面试中是否遇到过这个题?

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];
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: