LeetCode 583两个字符串的删除操作 72编辑距离 | 代码随想录25期训练营day56

news2024/11/23 9:57:33

动态规划算法13

LeetCode 583 两个字符串的删除操作 2023.12.19

  • 题目链接
  • 代码随想录讲解[链接]
    在这里插入图片描述
int minDistance(string word1, string word2) {
    //思路1,求除了最长公共序列外,两个字符串需删除的字符数
    //以下为求最长公共序列长度的动态规划方法
    /*
        vector<vector<int>> dp(word1.size()+1, vector<int>(word2.size()+1, 0));
        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] + 1;
                else
                    dp[i][j] = max(dp[i-1][j], dp[i][j-1]);
            }
        }
        //最后返回word1、word2相对最长公共序列需要操作的次数和
        return (word1.size()-dp[word1.size()][word2.size()])+(word2.size()-dp[word1.size()][word2.size()]);
        */

    //思路2,单纯计算两个字符串需要的最小操作次数
    //1确定二维dp数组,dp[i][j]表示以word1[0, i-1]字符串与word2[0, j-1]字符串相同的最小操作次数
    vector<vector<int>> dp(word1.size()+1, vector<int>(word2.size()+1, 0));
    //3初始化dp数组,由于递推公式中dp[i][j]可由dp[i-1][j-1]、dp[i][j-1]、dp[i-1][j]得到
    //那么初始化首行与首列,dp[0][i]含义为空字符串与以word2[0, i-1]字符串相同的最小操作次数,那么为i
    for (int i = 0; i <= word1.size(); i++)
        dp[i][0] = i;
    for (int i = 0; i <= word2.size(); i++)
        dp[0][i] = i;
    //2确定递推公式 4确定遍历顺序
    //顺序遍历
    for (int i = 1; i <= word1.size(); i++)
    {
        for(int j = 1; j <= word2.size(); j++)
        {
            //word1[i-1] == word2[j-1]时,不用操作,dp[i][j]=dp[i-1][j-1]
            if(word1[i-1] == word2[j-1])
                dp[i][j] = dp[i-1][j-1];
            //不相等时,需要操作,那么取一个最小操作次数
            //dp[i][j-1]需对word2删除一个,dp[i-1][j]需对word1删除一个,dp[i-1][j-1]需对word1、word2分别删除一个
            else
                dp[i][j] = min(min(dp[i][j-1] + 1, dp[i-1][j] + 1), dp[i-1][j-1] + 2);
        }
    }
    //最后返回word1与word2达到相同的最小操作次数
    return dp[word1.size()][word2.size()];
}

LeetCode 72 编辑距离 2023.12.19

  • 题目链接
  • 代码随想录讲解[链接]
    在这里插入图片描述
int minDistance(string word1, string word2) {
    //1确定二维dp数组,dp[i][j]表示以word1[0, i-1]字符串与word2[0, j-1]字符串相同的最小操作次数
    vector<vector<int>> dp(word1.size()+1, vector<int>(word2.size()+1, 0));
    //3初始化dp数组,由于递推公式中dp[i][j]可由dp[i-1][j-1]、dp[i][j-1]、dp[i-1][j]得到
    //那么初始化首行与首列,dp[0][i]含义为空字符串与以word2[0, i-1]字符串相同的最小操作次数,那么为i
    for (int i = 0; i <= word1.size(); i++)
        dp[i][0] = i;
    for (int i = 0; i <= word2.size(); i++)
        dp[0][i] = i;
    //2确定递推公式 4确定遍历顺序
    //顺序遍历
    for (int i = 1; i <= word1.size(); i++)
    {
        for(int j = 1; j <= word2.size(); j++)
        {
            //word1[i-1] == word2[j-1]时,不用操作,dp[i][j]=dp[i-1][j-1]
            if(word1[i-1] == word2[j-1])
                dp[i][j] = dp[i-1][j-1];
            //不相等时,需要操作,那么取一个最小操作次数
            //dp[i][j-1]需对word2删除(或增加)一个,dp[i-1][j]需对word1删除(或增加)一个,dp[i-1][j-1]需对word1或word2替换一个
            else
                dp[i][j] = min(min(dp[i-1][j]+1, dp[i][j-1]+1), dp[i-1][j-1]+1);
        }
    }
    //最后返回word1与word2达到相同的最小操作次数
    return dp[word1.size()][word2.size()];
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1321947.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

竞赛保研 Yolov安全帽佩戴检测 危险区域进入检测 - 深度学习 opencv

1 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; Yolov安全帽佩戴检测 危险区域进入检测 &#x1f947;学长这里给一个题目综合评分(每项满分5分) 难度系数&#xff1a;3分工作量&#xff1a;3分创新点&#xff1a;4分 该项目较为新颖&am…

基于SSM的通用权限管理系统

基于SSM的通用权限管理系统 一、系统介绍二、功能展示1.项目骨架2.登录3.主页 四、其它1.其他系统实现五.获取源码 一、系统介绍 项目名称&#xff1a;基于SSM的权限管理系统案例 项目架构&#xff1a;B/S架构 开发语言&#xff1a;Java语言 前端技术&#xff1a;Layui等 …

xcrun: error: invalid active developer path

macOS升级完成后出现 xcrun: error: invalid active developer path问题。 xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun这是由于 Xcode command line tools 丢…

03-数据结构-栈与队列

1.栈 栈和队列是两种操作受限的线性表。如上图所示显示栈的结构 栈&#xff1a;先进后出&#xff0c;入栈&#xff08;数据进入&#xff09; 和出栈&#xff08;数据出去&#xff09;均在栈顶操作。 常见栈的应用场景包括括号问题的求解&#xff0c;表达式的转换和求值&#…

运维知识点-Kubernetes_K8s

Kubernetes RBAC配置不当攻击场景攻击过程 RBAC配置不当 Service Account本质是服务账号&#xff0c;是Pod连接K8s集群的凭证。 在默认情况下&#xff0c;系统会为创建的Pod提供一个默认的Service Account&#xff0c; 用户也可以自定义Service Account&#xff0c;与Service…

Postgresql中自增主键序列的使用以及数据传输时提示:错误:关系“xxx_xx_xx_seq“不存在

场景 Postgresql在Windows中使用pg_dump实现数据库(指定表)的导出与导入&#xff1a; Postgresql在Windows中使用pg_dump实现数据库(指定表)的导出与导入-CSDN博客 上面讲使用pg_dump进行postgresql的导出与导入。 如果使用Navicat可以直接连接两个库&#xff0c;则可直接使…

如何在安卓手机Termux上安装MariaDB(MySQL)并实现远程连接数据库

文章目录 前言1.安装MariaDB2.安装cpolar内网穿透工具3. 创建安全隧道映射mysql4. 公网远程连接5. 固定远程连接地址 前言 Android作为移动设备&#xff0c;尽管最初并非设计为服务器&#xff0c;但是随着技术的进步我们可以将Android配置为生产力工具&#xff0c;变成一个随身…

基于win安装的docker内安装sonar时启动时错误

elasticsearch exited with code 78 以下要求和建议适用于在生产中的Docker中运行Elasticearch。 将vm.max_map_count至少设置为262144要用于生产&#xff0c;必须将vm.max_map_count内核设置至少设置为262144。 如何设置vm.max_map_count取决于您的平台。 这对我来说就是&a…

easyrecovery2024免费手机版数据恢复软件下载

easyrecovery14是easyrecovery系列软件的新版本&#xff0c;也是目前行业领先的数据恢复软件&#xff0c;具备更快捷、更高效、更便捷三大特色&#xff0c;能够帮助用户轻松恢复电脑丢失的数据。目前软件支持恢复不同存储介质数据&#xff0c;包括硬盘、光盘、U盘/移动硬盘、数…

C++学习笔记——STL(标准模板库)

系列文章 http://t.csdnimg.cn/u80hL 目录 系列文章[TOC](目录) 比喻与理解1.比喻2. 理解string和STL的关系string类型的存在意义——集中实现符号信息的管理 STL1. 什么是STL2. SGI版本3. STL的六大组件 string类1. C语言中的字符串2. 标准库中的string类2.1 string类2.2 str…

linux命令速查表

这是一个linux常见命令的列表&#xff01; 相关学习资料&#xff1a;【收藏】Linux系统常用命令速查手册&#xff08;附PDF下载方式&#xff09;_linux命令大全详解pdf-CSDN博客文章浏览阅读651次。给大家收集整理了日常常用的Linux系统命令&#xff0c;仅供大家参考。大家如…

【ESP32填坑日记】问题篇⑧ VScode中提示无法使用compilerPath解析配置:“C:/xxx/xtensa-esp32-elf-gcc.exe“

关注星标公众号&#xff0c;不错过精彩内容 作者 | 量子君 微信公众号 | 极客工作室 问题描述 在编译成功&#xff0c;重启之后就编译不成功了&#xff0c;并报如图错误&#xff1a; 无法使用 compilerPath 解析配置&#xff1a;“C:/xxx/xtensa-esp32-elf-gcc.exe” 解决…

如何压缩PDF文件大小在5m以内?三个方法轻松搞定!

现在电子化阅读越来越广泛&#xff0c;我们会从网络上下载很多内存很大的电子书、PDF论文&#xff0c;放在电脑上也着实占用空间&#xff0c;如何把PDF压缩到最小&#xff0c;下面就向大家介绍3款好用的PDF压缩工具和具体的操作步骤。 工具一&#xff1a;使用嗨格式压缩大师软件…

opencv 入门二(播放视频)

环境配置如下&#xff1a; opencv 入门一&#xff08;显示一张图片&#xff09;-CSDN博客 用OpenCV播放视频就像显示图像一样简单。唯一不同的是&#xff0c;我们需要某种循环来读取视频序列中的每一帧。 源码如下&#xff1a; #include <iostream> #include <str…

基于Arduino的智能太阳能追光系统(论文+源码)

1. 系统设计 本次的设基于Arduino的智能太阳能追光系统的设计&#xff0c;整体结构如图2.1所示。整个系统包括Arduino开发板&#xff0c;按键模块&#xff0c;太阳能板&#xff0c;X轴电机,Y轴电机&#xff0c;电池充电模块&#xff0c;电源模块&#xff0c;四路光照检测模块等…

NVMe前世今生

NVMe前世今生 1 NVMe的由来2 NVMe工作原理3 NVMe优点4 NVMe适用场景 本文属于《 NVMe协议基础系列教程》之一&#xff0c;欢迎查看其它文章。 1 NVMe的由来 目前机械硬盘大多数使用 SATA (Serial ATA Advanced Host Controller Interface) 接口&#xff0c;接口协议为 AHCI&a…

C++报错:error C2238: 意外的标记位于“;”之前

报错信息如下&#xff1a; 编译遇见这样的错误信息主要有一下几种&#xff1a; 情况一&#xff1a; 多数情况下出现这种问题的原因是因为头文件重复包含&#xff1a;即头文件A包含了B&#xff0c;头文件B又包含了A&#xff0c;导致编译器在加载头文件时陷入死循环。 解决办法…

Spring核心原理理解与总结

Spring 核心原理理解与总结 Spring 基础 什么是 Spring 框架&#xff1f; Spring 是一款开源的轻量级 Java 开发框架&#xff0c;旨在提高开发人员的开发效率以及系统的可维护性。开箱即用。 一般说 Spring 框架指的都是 Spring Framework 核心功能主要是 IoC 和 AOP。 Sp…

python与机器学习2,激活函数

目录 1 什么是激活函数&#xff1f; activation function 1.1 阈值 1.2 激活函数a(x) &#xff0c;包含偏置值θ 1.3 激活函数a(x) &#xff0c;包含偏置值b 2 激活函数1: 单位阶跃函数 2.1 函数形式 2.2 函数图形 2.3 函数特点 2.4 代码实现这个 单位阶跃函数 3 激活…

羊大师提示,把工作和生活分开轻松拥有幸福人生

羊大师提示&#xff0c;把工作和生活分开轻松拥有幸福人生 工作对于每个人来说是必不可少的一部分&#xff0c;但是在忙碌的工作中也不能忘记了生活的美好。如何平衡好工作和生活&#xff0c;成为了许多人追求的目标。 我们都知道&#xff0c;工作和生活之间的平衡是非常重要…