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 m = word1.size();
int n = word2.size();
// Edit[i][j]为word1[0..i-1]和word2[0..j-1]的最小编辑数
int Edit[m+1][n+1];
// 初始化
for(int i = 0;i <= m;++i){
Edit[i][0] = i;
}//for
for(int i = 0;i <= n;++i){
Edit[0][i] = i;
}//for
for(int i = 1;i <= m;++i){
for(int j = 1;j <= n;++j){
// 当前字符相同
if(word1[i-1] == word2[j-1]){
Edit[i][j] = Edit[i-1][j-1];
}//if
else{
Edit[i][j] = 1 + min(Edit[i-1][j-1],min(Edit[i-1][j],Edit[i][j-1]));
}//else
}//for
}//for
return Edit[m][n];
}
};