LeetCode 583.两个字符串的删除操作
题目链接:
代码:
cpp
class Solution {
public:
int minDistance(string word1, string word2) {
int size_1 = word1.size();
int size_2 = word2.size();
vector<vector<int>>dp(size_1+1,vector<int>(size_2+1,0));
for (int i = 0; i <= word1.size(); i++) dp[i][0] = i;
for (int j = 0; j <= word2.size(); j++) dp[0][j] = j;
for(int i=1;i<=size_1;i++){
for(int j=1;j<=size_2;j++){
if(word1[i-1]==word2[j-1]){
dp[i][j]=dp[i-1][j-1];
}
else{
dp[i][j]=min(dp[i][j-1]+1,dp[i-1][j]+1);
}
}
}
return dp[size_1][size_2];
}
};
LeetCode 72.编辑距离
题目链接:
代码:
cpp
class Solution {
public:
int minDistance(string word1, string word2) {
int size_1 = word1.size();
int size_2 = word2.size();
vector<vector<int>>dp(size_1+1,vector<int>(size_2+1));
for(int i=0;i<=size_1;i++) dp[i][0] = i;
for(int j=0;j<=size_2;j++) dp[0][j] = j;
for(int i=1;i<=size_1;i++){
for(int j=1;j<=size_2;j++){
if(word1[i-1]==word2[j-1]) dp[i][j]=dp[i-1][j-1];
else dp[i][j] = min(min(dp[i][j-1]+1,dp[i-1][j]+1),dp[i-1][j-1]+1);
}
}
return dp[size_1][size_2];
}
};