每日一题: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;需要的朋友可以参考下。希望大家阅读完这…

oracle存储数据方式,Oracle 数据类型及存储方式

Oracle 数据类型及存储方式袁光东 原创概述通过实例&#xff0c;全面而深入的分析oralce的基本数据类型及它们的存储方式。以ORACLE 10G为基础&#xff0c;介绍oralce 10g引入的新的数据类型。让你对oracle数据类型有一个全新的认识。揭示一些不为人知的秘密和被忽略的盲点。从…

oracle的一些基本操作,Oracle中的一些基本操作

关于Oracle中的一些基本操作&#xff0c;包括表空间操作&#xff0c;用户操作&#xff0c;表操作1 --创建表空间2 create tablespace itheima3 datafile I:\oracle\table\itheima.dbf4 size 100m5 autoextend on6 next 10m;7 --删除表空间8 drop tablespace itheima;910 --创建…

oracle全局批准供应商,Oracle EBS-SQL (PO-7):检查异常-非批准的供应商设置供货比例.sql...

select distinctmsr.sourcing_rule_name 名称,msi.description 说明,msi.item_type 类型,msi.inventory_item_status_code 状态,msr.planning_active 计划生效,msro.effective_date 有…

linux 临时文件 锁,linux – 无法使用文件描述符flock锁定文件

您正在使用-n,如果无法立即获取锁定将终止,并且flock将以退出代码1失败.因此,在第一个终端中执行代码后,它会休眠100秒.接下来当你在另一个终端中执行相同的操作时,flock会失败并返回1,但是因为有一个;并且您不对返回代码执行任何操作,shell只是继续执行下一个语句并休眠100秒.…

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

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

win7下访问linux文件权限,linux中文件的权限

一、文件的基本权限权限&#xff1a;r, w, x对于文件来讲&#xff0c;r:&#xff1a;可读&#xff0c;可以使用类似cat等命令查看文件内容&#xff1b;w:可写&#xff0c;可以编辑或删除此文件&#xff1b;x:可执行&#xff0c;exacutable&#xff0c;可以命令提示符下当作命令…

linux头文件怎么编译,microsoft编译器怎么使用Linux头文件

microsoft编译器如何使用Linux头文件?#include #include #include #include #include #include #include #include #include #include #include #include #include 分享到&#xff1a;------解决方案--------------------windows 对应 上面头文件 是哪个呀?引用:一般都是网络…

linux程序多少位,查看linux版本是多少位

1 查看内核版本&#xff1a;1)[rootLinux download]# cat /proc/versionLinux version 2.6.18-194.el5 (mockbuildbuilder16.centos.org) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-48)) #1 SMP Fri Apr 2 14:58:35 EDT 20102)[rootLinux download]# uname -aLinux Linux 2.…

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

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

zabbix监控linux网卡流量,zabbix实现linux流量变化率监控

监控软件&#xff1a;zabbix需求分析&#xff1a;从系统层面的监控看&#xff0c;现在CPU持续超过80%会报警&#xff0c;流量曲线达到阀值才会报警&#xff0c;但是流量在短时间内起伏很大&#xff0c;肯定是有问题的&#xff0c;目前主要还是依靠人看&#xff0c;肯定有滞后性…

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

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

linux软件工程师笔试题,C/C++软件工程师笔试题

1&#xff0c;程序设计(可以用自然语言来描述&#xff0c;不编程)&#xff1a;C/C源代码中&#xff0c;检查花括弧(是“(”与“)”&#xff0c;“{”与“}”)是否匹配&#xff0c;若不匹配&#xff0c;则输出不匹配花括弧所在的行与列。2&#xff0c;巧排数字&#xff0c;将1,2…

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

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

linux 制作box文件夹,用busybox制作自己简易的根文件系统

当使用Busybox-1.2.0制作根文件系统交叉编译器为3.3.2make-3.8.1STEP 1&#xff1a;创建根文件系统目录&#xff0c;主要包括以下目录/bin&#xff0c;/etc&#xff0c;/dev&#xff0c;/mnt&#xff0c;/sbin&#xff0c;/usr。STEP 2&#xff1a;升级make到3.81版本&#xff…

linux主频限制服务,linux抵御DDOS攻击 通过iptables限制TCP连接和频率

cc攻击一到就有点兵临城下的感觉&#xff0c;正确的设置防护规则可以做到临危不乱&#xff0c;这里给出一个iptables对ip进行连接频率和并发限制&#xff0c;限制单ip连接和频率的设置规则的介绍#单个IP在60秒内只允许新建20个连接,这里假设web端口就是80,iptables -I INPUT -…

linux es数据库 head,elasticsearch安装es-sql插件

说明&#xff1a;本示例是在CentOs Linux7.4上运行&#xff0c;安装的es版本为6.8.0&#xff0c;对应es-sql版本6.8.0&#xff0c;es-head版本5.0.0&#xff0c;需要安装JDK下载es安装包wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.8.0.tar.gz…

LINUX进程调度分析源码,Linux 实时调度(源码分析)

为了弄清楚在多cpu系统中是如何实现实时调度的&#xff0c;先引入以下几个概念&#xff1a;cpu的状态&#xff1a;我们知道&#xff0c;在linux系统中&#xff0c;任务的优先级为0~140。INVALID:(-1)该cpu不可用IDLE(0):140NORMAL(1)&#xff1a;100~139对应于普通任务的优先级…

linux源码文件名,Linux中文件名解析处理源码分析

Linux中文件名解析处理源码分析前言Linux中对一个文件进行操作的时候&#xff0c;一件很重要的事情是对文件名进行解析处理&#xff0c;并且找到对应文件的inode对象&#xff0c;然后创建表示文件的file对象。在此&#xff0c;对文件名解析过程&#xff0c;并且如何找到对应ino…

帝国cms linux伪静态规则,帝国cms7.2伪静态规则怎么写

一、在linux主机下实现伪静态确认虚拟主机是否支持rewrite伪静态.htaccess文件。添加.htaccess 文件&#xff0c;把htaccess 文件放在网站根目录。二、在win主机下实现伪静态确认虚拟主机是否支持rewrite伪静态httpd.ini文件。添加httpd.ini文件&#xff0c;把httpd.ini文件放入…