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) {
vector<vector<int> > dis(word1.size()+1,vector<int>(word2.size()+1,0));
for(int i=word1.size()-1;i>=0;i--){
dis[i][word2.size()]=word1.size()-i;
}
for(int i=word2.size()-1;i>=0;i--){
dis[word1.size()][i]=word2.size()-i;
}
for(int i=word1.size()-1;i>=0;i--){
for(int j=word2.size()-1;j>=0;j--){
if(word1[i]==word2[j]){
dis[i][j]=dis[i+1][j+1];
}else{
dis[i][j]=min(dis[i+1][j+1],dis[i][j+1]);
dis[i][j]=min(dis[i][j],dis[i+1][j]);
dis[i][j]++;
}
}
}
return dis[0][0];
}
};