代码随想录算法训练营第五十五 | ● 583. 两个字符串的删除操作 ● 72. 编辑距离

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

https://programmercarl.com/0583.两个字符串的删除操作.html

cpp 复制代码
class Solution {
public:
    int minDistance(string word1, string word2) {
        vector<vector<int>> dp(word1.size()+1,vector<int>(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];
                    //这里的逻辑一开始考虑错了
                    //dp[i][j] = min(dp[i-1][j]-1,min(dp[i][j-1]-1,dp[i-1][j-1]));
                else
                    dp[i][j] = min(dp[i-1][j]+1,dp[i][j-1]+1);
            }
        }
        return dp[word1.size()][word2.size()];
    }
};

72. 编辑距离

https://programmercarl.com/0072.编辑距离.html

cpp 复制代码
class Solution {
public:
    int minDistance(string word1, string word2) {
        vector<vector<int>> dp(word1.size()+1,vector<int>(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],dp[i-1][j]})+1;
                    //dp[i][j] = min(dp[i-1][j]+1,dp[i][j-1]+1);
                }
            }
        }
        return dp[word1.size()][word2.size()];
    }
};

这类题目的代码大致思路:

相关推荐
木井巳5 分钟前
【递归算法】计算布尔二叉树的值
java·算法·leetcode·深度优先
安全二次方security²6 分钟前
CUDA C++编程指南(7.19&20)——C++语言扩展之Warp投票函数和Warp匹配函数
c++·人工智能·nvidia·cuda·投票函数·匹配函数·vote
Trouvaille ~30 分钟前
【Linux】进程信号(三):信号捕捉与操作系统运行原理
linux·运维·服务器·c++·操作系统·信号·中断
睡一觉就好了。31 分钟前
直接选择排序
数据结构·算法·排序算法
哈哈不让取名字36 分钟前
分布式日志系统实现
开发语言·c++·算法
芬加达38 分钟前
leetcode221 最大正方形
java·数据结构·算法
知无不研43 分钟前
实现一个整形栈
c语言·数据结构·c++·算法
夏鹏今天学习了吗1 小时前
【LeetCode热题100(98/100)】子集
算法·leetcode·深度优先
DuHz1 小时前
用于汽车应用的数字码调制(DCM)雷达白皮书精读
论文阅读·算法·自动驾驶·汽车·信息与通信·信号处理