两个字符串的删除操作(LeetCode-583)

简介: 两个字符串的删除操作(LeetCode-583)

两个字符串的删除操作(LeetCode-583)


题目

给定两个单词 word1 和 word2 ,返回使得 word1 和 word2 相同所需的最小步数。


每步 可以删除任意一个字符串中的一个字符。


示例 1:

输入: word1 = "sea", word2 = "eat"
输出: 2
解释: 第一步将 "sea" 变为 "ea" ,第二步将 "eat "变为 "ea"


示例 2:

输入:word1 = "leetcode", word2 = "etco"
输出:4


提示:


1 <= word1.length, word2.length <= 500

word1 和 word2 只包含小写英文字母


思路

五部曲


dp[i][j] 含义


以 i − 1 i-1i−1 为结尾的字符串word1和以 j − 1为结尾的字符串word2t想要相等,需要删除元素的最小次数

递推公式


如果 w o r d 1 [ i − 1 ] = w o r d 2 [ j − 1 ]

次数为 d p [ i − 1 ] [ j − 1 ]

如果二者不相等,有下述三种情况

删除 w o r d 1 [ i − 1 ] ,最少操作次数为 d p [ i − 1 ] [ j ] + 1

删除 w o r d 2 [ j − 1 ] ,最少操作次数为 d p [ i ] [ j − 1 ] + 1

二者取最小值

数组初始化


dp[i][0] word2为空字符串,明显等于 i

dp[0][j] word1为空字符串,明显等于 j

遍历顺序


从前往后

测试用例



代码展示

class Solution
{
public:
    int minDistance(string word1, string word2)
    {
        int n1 = word1.size();
        int n2 = word2.size();
        vector<vector<int>> dp(n1 + 1, vector<int>(n2 + 1));
        for (int i = 1; i <= n1; i++)
        {
            dp[i][0] = i;
        }
        for (int j = 1; j <= n2; j++)
        {
            dp[0][j] = j;
        }
        for (int i = 1; i <= n1; i++)
        {
            for (int j = 1; j <= n2; 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[n1][n2];
    }
};
目录
相关文章
|
24天前
|
人工智能 并行计算 物联网
2026年Stable Diffusion下载+安装+使用教程(超详细版本)收藏这一篇就够了!
本文详解Windows平台Stable Diffusion秋葉整合包(v4.11.1)的本地安装与使用,含Cuda/AMD HIP双支持、ControlNet及LoRA模型配置,无需Python基础,仅需100–200GB空间,新手也能快速上手AI绘画。
|
域名解析 人工智能 运维
DataWorks AI助理:在钉钉让AI助理帮你盯任务、修问题
DataWorks AI助理支持定时巡检监控规则告警及指定任务异常,可对接钉钉等IM端实时推送、诊断并自动修复问题。用户在移动端即可完成告警接收、分析、确认与修复全流程,无需切换PC端,大幅提升运维效率。
305 0
|
Java 分布式数据库 数据库
软件各种系统架构图
原文:软件各种系统架构图 https://blog.csdn.net/everythingss/article/details/78749247     该技术架构图是本人根据多年企业技术架构经验而制定,是企业技术的总架构图,希望对CTO们有所借鉴。
9107 0
|
前端开发
HTML+CSS+JS实现卡通人物C罗ui特效
2022年卡塔尔世界杯(英语:FIFA World Cup Qatar 2022)是第二十二届世界杯足球赛,是历史上首次在卡塔尔和中东国家境内举行、也是第二次在亚洲举行的世界杯足球赛。除此之外,卡塔尔世界杯还是首次在北半球冬季举行、首次由从未进过世界杯决赛圈的国家举办的世界杯足球赛
HTML+CSS+JS实现卡通人物C罗ui特效
|
算法 Linux 调度
操作系统实验四 进程运行轨迹的跟踪与统计(哈工大李治军)(二)
操作系统实验四 进程运行轨迹的跟踪与统计(哈工大李治军)(二)
509 0
操作系统实验四 进程运行轨迹的跟踪与统计(哈工大李治军)(二)
★色盲悖论正解!
假设:有一个人,他有一种奇怪的色盲症。他看到的两种颜色和别人不一样,他把蓝色看成绿色,把绿色看成蓝色。   但是他自己并不知道他跟别人不一样,别人看到的天空是蓝色的,他看到的是绿色的,但是他和别人的叫法都一样,都是“蓝色”;小草是绿色的,他看到的却是蓝色的,但是他把蓝色叫做“绿色”。
6357 0
|
弹性计算 虚拟化
vCPU是什么意思?和CPU有什么区别
vCPU是什么意思?和CPU有什么区别
6475 0
|
机器学习/深度学习 人工智能 自然语言处理
重磅!花书《深度学习》,这份精炼笔记可能是最全面的
重磅!花书《深度学习》,这份精炼笔记可能是最全面的
4269 0
重磅!花书《深度学习》,这份精炼笔记可能是最全面的
|
监控 安全 Linux
服务器是什么?(四种服务器类型)
服务器是什么?(四种服务器类型)
1876 0

热门文章

最新文章