每日一题:LCR 095.最长公共子序列(DP)

题目描述:

给定两个字符串 text1 和 text2,返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 ,返回 0 。

一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。

  • 例如,"ace" 是 "abcde" 的子序列,但 "aec" 不是 "abcde" 的子序列。

两个字符串的 公共子序列 是这两个字符串所共同拥有的子序列。

示例 1:

输入:text1 = "abcde", text2 = "ace" 
输出:3  
解释:最长公共子序列是 "ace" ,它的长度为 3 。

示例 2:

输入:text1 = "abc", text2 = "abc"
输出:3
解释:最长公共子序列是 "abc" ,它的长度为 3 。

示例 3:

输入:text1 = "abc", text2 = "def"
输出:0
解释:两个字符串没有公共子序列,返回 0 。

提示:

  • 1 <= text1.length, text2.length <= 1000
  • text1 和 text2 仅由小写英文字符组成。

思路:

本题采用动态规划的思想,是一道很经典的动态规划问题,我们把查找公共子序列问题一步一步压缩成最小子问题。创建dp表,写出状态转移方程,本题难点在于如何求出状态转移方程。

首先,第一种情况当最后一个字符相同时,我们只要比较前n-1个字符,第二种情况,当最后一个字符不同时,我们将一个字符串的最后一位相前移动一个比较。

如图:

然后代码实现时注意细节:我们dp表要创建的是m+1和n+1的大小,好进行初始化。

代码实现

class Solution {
public:int longestCommonSubsequence(string text1, string text2) {int m=text1.size();int n=text2.size();vector<vector<int>> dp(m+1,vector<int>(n+1,0));for(int i=1;i<m+1;i++){for(int j=1;j<n+1;j++){if(text1[i-1]==text2[j-1])dp[i][j]=dp[i-1][j-1]+1;elsedp[i][j]=max(dp[i-1][j],dp[i][j-1]);}}return dp[m][n];}
};

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

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

相关文章

php自动合并,php实现合并数组并去除重复的方法

php实现合并数组并去除重复的方法发布时间&#xff1a;2020-08-12 10:35:05来源&#xff1a;亿速云阅读&#xff1a;99作者&#xff1a;小新这篇文章主要介绍了php实现合并数组并去除重复的方法&#xff0c;具有一定借鉴价值&#xff0c;需要的朋友可以参考下。希望大家阅读完这…

linux内核运行关系图,一张图看懂Linux内核运行交互关系

很多朋友如果接触过Linux的都知道Kernel的含义&#xff0c;kernel是操作系统的核心或者最重要的部分。众所周知的是&#xff0c;几乎整个互联网都运行在 Linux上&#xff0c;从网络协议&#xff0c;到服务器&#xff0c;到你平常访问的绝大多数网站&#xff0c;都能看到它的身…

linux内核bios,BIOS的启动原理——Linux内核设计学习笔记

RAM&#xff1a;随机存取存储器&#xff0c;常见的内存条就是一类RAM&#xff0c;其特点是加电状态下可任意读、写&#xff0c;断电后信息消失。在RAM中什么程序也没有的时候&#xff0c;谁来完成加载软盘中操作系统的任务呢&#xff1f;答案是&#xff1a;BIOS。BIOS的启动原理…

Linux下仿windows任务管理器,开源任务管理器 Process Hacker (Windows)

Windows表面上没有工作在进行中&#xff0c;但不知为何负荷很重&#xff0c;究竟有什么进程在执行&#xff1f;会不会是系统已经被入侵&#xff1f;这是很多人都想知道的问题。但Windows自带的任务管理员实在太过简陋&#xff0c;解决办法便是安装这次介绍的Process Hacker。熟…

嵌入式linux中的锁机制,跟涛哥一起学嵌入式第11集:一个实现锁机制非常有意思的宏...

QQ群(宅学部落)有位学员问了一个很奇怪的宏&#xff0c;觉得很有意思&#xff0c;特拿来分享&#xff0c;它的定义如下:我们知道&#xff0c;宏定义其实就是为了方便&#xff0c;给一串代码字符串定义一个别名。有时候字符串过于复杂&#xff0c;我们可以分多行书写&#xff0c…

linux core 永久生效,【调试】Core Dump是什么?Linux下如何正确永久开启?

内容简介【调试】Core Dump是什么&#xff1f;Linux下如何正确永久开启&#xff1f;Core Dump是什么&#xff1f;Linux下如何正确永久开启&#xff1f;Core Dump是什么&#xff1f;Core Dump乍听之下很抽象。当程序运行的过程中异常终止或崩溃&#xff0c;操作系统会将程序当时…

用于用户C语言标识符,下列可用于C语言用户标识符的一组是( )

摘要&#xff1a;下列不属于骨肉瘤患者常见护理问题()于C语言用户组Since people send nonverbal signals through multiple channels simultaneously, it is impossible to increase our nonverbal communication competence by becoming more aware of how it operates in sp…

c语言猜四位数游戏猜10次,C语言猜数字游戏--随机生成4个不相同的数字从小到大排序,用户开始游戏,如果用户猜对数字和数字对应的位置,界面回馈A,如果数字正确位置不正确,则回馈B...

1.看程序运行截图吧&#xff01;&#xff01;由于博主本人较笨&#xff0c;就不动画演示了&#xff0c;如果动画的话可能将是一个漫长的过程&#xff01;猜数字游戏.png2.游戏题目随机生成4个不相同的数字从小到大排序&#xff0c;用户开始游戏&#xff0c;如果用户猜对数字和数…

双端堆c语言,数据结构——双端堆(C语言)

定义双端堆&#xff1a;是一棵完全二叉树&#xff0c;该完全二叉树要么为空&#xff0c;要么同时满足下列性质&#xff1a;(1) 根节点不包含元素&#xff1b;(2) 左子树是一个最小堆&#xff1b;(3) 右子树是一个最大堆&#xff1b;(4) 如果右子树不空&#xff0c;令i是左子树中…

C语言和我的世界指令哪个难,我的世界难度有什么区别 难度选择指令介绍

我的世界中的难度(Difficulty)可以在Minecraft的选项菜单内切换。更改这个选项将直接影响到游戏本身。选项中并没有设定影响攻击性生物的可生成数量&#xff0c;包括和平模式。目前游戏共有和平、简单、普通和困难4种难度。我的世界难度区别和平&#xff1a;会生成攻击性生物&a…

w ndows10即将停止更新,微软开始警告Windows 10 v1909用户即将停止更新服务

如果您仍在运行Windows 10版本1909&#xff0c;版本1903或更早版本&#xff0c;则可能已经在系统任务栏中注意到一条新消息&#xff1a;Windows 10版本即将终止服务。根据Windows 10 May 2020 Update或2020年10月Update。为了将用户升级到最新版本的Windows 10&#xff0c;“您…

Android10不能用谷歌,谷歌真的很严格,一大波老APP将不能在安卓10.0运行

苹果iOS的一大优点就是软件生态&#xff0c;第三方APP都会主动适配新的iOS系统以及手机。虽然说Android的开放性是也是一大优点&#xff0c;但是第三方软件参差不齐的优化适配水平也让安卓的用户非常头疼。不过谷歌每年都在致力于让Android的软件生态更好。根据XDA的报道&#…

c语言编程季节输出春夏秋冬,c语言编程题: 用枚类型定义春、夏、秋、冬四个季节...

满意答案bcabcdefg2013.07.28采纳率&#xff1a;49% 等级&#xff1a;12已帮助&#xff1a;5373人#includeenum season{spring 1,summer,autumn,winter,};season GetSeasonByMonth(char month){if(month < 3 && month>1)return spring;else if(month < 6 …

华为升级harmonyos的机型名单,华为鸿蒙 OS 2.0 系统适配名单已出,四月推送,天玑机型暂时无缘...

原标题&#xff1a;华为鸿蒙 OS 2.0 系统适配名单已出&#xff0c;四月推送&#xff0c;天玑机型暂时无缘华为官方在 2020 年发布了旗下自研系统“HarmonyOS 2.0”版本&#xff0c;发布会现场展示了 HarmonyOS 2.0 开发者 Beta 版本&#xff0c;并开启开发者 Beta 的公测。此外…

android 混合开发 图片,混合开发的大趋势之一React Native之Image

文章是宝宝自己写的&#xff0c;你可以转走&#xff0c;标明哪来的就行王亟亟的大牛之路国庆这些天要么旅游要么WOW&#xff0c;感觉整个人都废了。。直接从黄种人晒成了非洲大酋长。。然而还是无橙&#xff0c;这礼拜要做7天&#xff0c;昨天把单元测试的东西整完后今天下午抽…

html5实现无缝滚动的效果,基于JavaScript实现无缝滚动效果

本文实例为大家分享了JavaScript实现无缝滚动效果展示的具体代码&#xff0c;供大家参考&#xff0c;具体内容如下首先应该区分样式中的绝对定位和相对定位&#xff0c;一般来说&#xff0c;移动的单位为绝对定位&#xff0c;在这个实例中&#xff0c;移动的Ul就是绝对定位 &am…

html5内联框去滚动条,如何优雅的实现内联滚动条(前端底部固定方法 )

我是一个网易云粉&#xff0c;有没有发现网易云音乐两边的滚动条是互不相干的&#xff0c;而且头部和底部都是固定的&#xff0c;这是如何实现的呢&#xff1f;先看个图吧。网易云音乐的页面其实要实现这样一个内联滚动条不难。我们可以先从实现一个内联滚动条开始实现。实现方…

html中未填写完提示未填写,亚马逊官方试题(开店及运营篇)

六.玩转新账号单选1、可以在亚马逊网站投放广告吗&#xff1f;A:部分可以投放&#xff0c;部分则由亚马逊控制B:全部不可以C:全部都可以D:只可在网站页面有责投放 A2、恢复移动板块初始界面后台什么位置设置A:无法恢复B:需手动逐一恢复 C:右上角Setting里设置D:左下角设置 D3、…

科学计算机 分数计算公式,Z分数(标准分数,Z-Score)公式与在线计算器_三贝计算网_23bei.com...

输入原始数据(X)、平均数(M)、标准差(S)、Z分数值(Z)等4个变量中任意3个已知变量&#xff0c;点击计算按钮&#xff0c;可快速求出求出未知变量。Z 分数也叫标准分数(standard score)&#xff0c;能够真实的反应一个分数距离平均数的相对标准距离。如果我们把每一个分数都转换成…

说唱计算机网红,首档喊麦节目太奇葩,蹭了说唱热度,还请了被封杀网红当导师...

原标题&#xff1a;首档喊麦节目太奇葩&#xff0c;蹭了说唱热度&#xff0c;还请了被封杀网红当导师首档喊麦节目太奇葩&#xff0c;蹭了说唱热度&#xff0c;还请了被封杀网红当导师大家都知道&#xff0c;如今的综艺节目越来越多各种题材应有尽有&#xff0c;尤其是音乐类的…