动态规划
题目链接: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;
}
};