题目
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
将word1通过替换,删除,插入等操作转换成word2,用到二维dp,详解参考:20ms Detailed Explained C++ Solutions (O(n) Space)
class Solution {
public:
int minDistance(string word1, string word2) {
int m=word1.size(), n=word2.size();
vector<vector<int> > dp(m+1,vector<int> (n+1,0));
for(int i=1;i<=m;++i){
dp[i][0]=i;
}
for(int j=1;j<=n;++j){
dp[0][j]=j;
}
for(int i=1;i<=m;++i){
for(int j=1;j<=n;++j){
if(word1[i-1]==word2[j-1])
dp[i][j]=dp[i-1][j-1];
else
dp[i][j]=min(dp[i-1][j-1]+1,min(dp[i-1][j]+1,dp[i][j-1]+1));
}
}
return dp[m][n];
}
};