您的位置:首页 > 其它

算法分析与设计丨第十周丨LeetCode(14)——Edit distance(Hard)

2017-11-12 09:10 495 查看
动态规划

题目链接:https://leetcode.com/problems/edit-distance/description/

题目描述:

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
题目解析:这星期有点忙,下次有时间再来补上

class Solution {
public:
int minDistance(string word1, string word2) {
int size1 = word1.size() + 1;
int size2 = word2.size() + 1;

vector< vector<int> > temp_matrix(size1,vector<int>(size2));

for(int i = 0;i < size1;++i)
temp_matrix[i][0] = i;

for(int i = 0;i < size2;++i)
temp_matrix[0][i] = i;

for(int i = 1;i < size1;++i)
for(int j = 1;j < size2;++j)
{
int diff = 0;
if(word1[i-1] != word2[j-1])
diff = 1;

int temp = min(1+temp_matrix[i-1][j],1+temp_matrix[i][j-1]);
temp = min(temp,diff + temp_matrix[i-1][j-1]);

temp_matrix[i][j] = temp;

}

int result = temp_matrix[size1-1][size2-1];

return result;

}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐