[自我记录]随想录刷题第四十八天 | 583. 两个字符串的删除操作, 72. 编辑距离

代码随想录算法打卡, 新手自我记录一下刷题历程, 仅为自我打卡使用.


583. 两个字符串的删除操作

class Solution {
public:
    int minDistance(string word1, string word2) {
        vector> dp(word1.size() + 1, vector(word2.size() + 1, 0));
        for (int i = 0; i <= word1.size(); ++i) {
            dp[i][0] = i;
        }
        for (int i = 0; i <= word2.size(); ++i) {
            dp[0][i] = i;
        }

        for (int i = 1; i <= word1.size(); ++i) {
            for (int j = 1; j <= word2.size(); ++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, dp[i][j - 1] + 1);
                }
            }
        }
        return dp.back().back();
    }
};

72. 编辑距离

class Solution {
public:
    int minDistance(string word1, string word2) {
        vector> dp(word1.size() + 1, vector(word2.size() + 1, 0));
        for (int i = 1; i <= word1.size(); ++i) {
            dp[i][0] = i;
        }
        for (int i = 1; i <= word2.size(); ++i) {
            dp[0][i] = i;
        }
    
        for (int i = 1; i <= word1.size(); ++i) {
            for (int j = 1; j <= word2.size(); ++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, min(dp[i][j - 1] + 1, dp[i - 1][j - 1] + 1));
                }
            }
        }

        return dp.back().back();
    }
};

希望能再坚持一天!

你可能感兴趣的:(刷题打卡自我记录,算法,leetcode,c++)