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
http://www.cnblogs.com/lihaozy/archive/2012/12/31/2840152.html
http://blog.csdn.net/huaweidong2011/article/details/7727482
class Solution {
public:
int minDistance(string word1, string word2) {
int row = word1.length() + 1;
int col = word2.length() + 1;
vector<vector<int>> mat(row, vector<int>(col));
for(int ii = 0; ii < row; ii ++) {
mat[ii][0] = ii;
}
for(int ii = 0; ii < col; ii ++) {
mat[0][ii] = ii;
}
for(int ii = 1; ii < row; ii ++) {
for(int jj = 1; jj < col; jj ++) {
if(word1[ii - 1] == word2[jj - 1]) {
mat[ii][jj] = mat[ii - 1][jj - 1];
}
else {
mat[ii][jj] = min(min(mat[ii - 1][jj] + 1, mat[ii][jj - 1] + 1), mat[ii - 1][jj - 1] + 1);
}
}
}
return mat[row - 1][col - 1];
}
};