LCR 095. 最长公共子序列 / LeetCode 1143. 最长公共子序列(动态规划)

题目:

链接:LCR 095. 最长公共子序列;LeetCode 1143. 最长公共子序列
难度:中等

给定两个字符串 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[i][j] 的含义是:对于 s1[1…i] 和 s2[1…j],它们的 LCS 长度是 dp[i][j]。

代码:

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

时间复杂度O(NM)。
空间复杂度O(N
M)。N、M分别是两个字符串的长度。

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

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

相关文章

TiDB Serverless 正式商用,全托管的云服务带来数据管理和应用程序开发的全新体验

八 年 前 &#xff0c;我们构建了 TiDB&#xff0c;一个开源分布式关系型数据库。 我们的目标是重新定义开发者和企业处理数据的方式&#xff0c;满足不断增长的可扩展性、灵活性和性能需求。 从那时起&#xff0c;PingCAP 便致力于为开发者和企业提供快速、灵活和规模化的数据…

【MySQL】——常用接口API即相关函数说明

目录 1、MySQL结构体的说明 1、MYSQL结构体 2.MYSQL_RES结构体 3. MYSQL_FIELD 2. 接口的使用步骤 3、mysql_init()——MYSQL对象初始化 4、mysql_real_connect()——数据库引擎建立连接 5. mysql_query()——查询数据库某表内容 6、mysql_real_query——执行SQL语句 …

JPA使用nativeQuery自定义SQL怎么插入一个对象参数呢?

0、我们在前后端传递数据时候&#xff0c;参数多的情况下&#xff0c;常常将这些参数封装成对象&#xff1b;当有些场景你需要使用JPA nativeQuery自定义SQL&#xff0c;要将这个对象insert时候&#xff0c;初学者似乎有点犯难&#xff0c;jpa不是spring-data项目的内容吗&…

软件工程中应用的几种图辨析

【软件工程】软件工程中应用的几种图辨析&#xff1a;系统流程图、数据流图、数据字典、实体联系图、状态转换图、层次方框图、Warnier图、IPO图、层次图、HIPO图、结构图、程序流程图、盒图、PAD图、判定表_眩晕李的博客-CSDN博客 软件工程——实体关系图 状态转换图 数据流…

算法训练Day40|343. 整数拆分 ● 96.不同的二叉搜索树

LeetCode : 343. 整数拆分 - 力扣&#xff08;LeetCode&#xff09; 1.思路 确定dp[]数组含义&#xff0c;dp[n]表示数 n 各子数的最大乘积dp[2] 初始为 1. 遍历顺序&#xff0c;从 3 开始&#xff0c;最值从 j * (i - j) 和 j * dp[i - j] 以及 dp[i] 中选择.dp[i] Math.ma…

通过cpolar内网穿透发布网页测试

通过内网穿透发布网页测试 文章目录 通过内网穿透发布网页测试 对于网站开发者来说&#xff0c;对完成的网页进行测试十分必要&#xff0c;同时还要在测试过程中充分采纳委托制作方的意见&#xff0c;及时根据甲方意见进行修改&#xff0c;但在传统的测试方式中&#xff0c;必须…

Maven入职学习

一、什么是Maven&#xff1f; 概念&#xff1a; Maven是一种框架。它可以用作依赖管理工具、构建工具。 它可以管理jar包的规模、jar包的来源、jar包之间的依赖关系。 它的用途就是管理规模庞大的jar包&#xff0c;脱离IDE环境执行构建操作。 具体使用&#xff1a; 工作机…

用Rust实现23种设计模式之 组合模式

组合模式是一种结构型设计模式&#xff0c;它允许将对象组合成树状结构&#xff0c;并且能够以统一的方式处理单个对象和组合对象。以下是组合模式的优点和使用场景&#xff1a; 优点&#xff1a; 简化客户端代码&#xff1a;组合模式通过统一的方式处理单个对象和组合对象&a…

Java课题笔记~ 不使用 AOP 的开发方式(理解)

Step1&#xff1a;项目 aop_leadin1 先定义好接口与一个实现类&#xff0c;该实现类中除了要实现接口中的方法外&#xff0c;还要再写两个非业务方法。非业务方法也称为交叉业务逻辑&#xff1a; doTransaction()&#xff1a;用于事务处理 doLog()&#xff1a;用于日志处理 …

sql 关联了2张表的 update 语句(转)

转自&#xff1a;SQL Update&#xff1a;使用一个表的数据更新另一张表 、update 关联两个表 基本上 select 能支持的关联和子查询操作&#xff0c;都能在 update 语句中使用。 在 where 条件中使用子查询 update a set a.age 1 where id in (select device_id from b) 在 wher…

42.利用 牛顿迭代法解非线性高维方程组(matlab程序)

1.简述 若向量记号为X,方程组就可以写成F(X)0的形式。 我们知道&#xff0c;对于一元函数的牛顿迭代法求根公式 类似的&#xff0c;对于多元函数求根公式 其中X是向量&#xff0c;是非线性方程组对应的雅可比矩阵。 具体求解的时候&#xff0c;我们可以先通过绘图命令绘制图形…

Selenium 根据元素文本内容定位

使用xpath定位元素时&#xff0c;有时候担心元素位置会变&#xff0c;可以考虑使用文本内容来定位的方式。 例如图中的【股市】按钮&#xff0c;只有按钮文本没变&#xff0c;即使位置变化也可以定位到该元素。 xpath内容样例&#xff1a; # 文本内容完全匹配 //button[text(…

Python2.x 与 3​​.x 版本区别

Python2.x 与 3​​.x 版本区别 Python 的 3​​.0 版本&#xff0c;常被称为 Python 3000&#xff0c;或简称 Py3k。相对于 Python 的早期版本&#xff0c;这是一个较大的升级。 为了不带入过多的累赘&#xff0c;Python 3.0 在设计的时候没有考虑向下相容。 许多针对早期 …

刷题笔记 day9

1658 将 x 减到 0 的最小操作数 解析&#xff1a;1. 当数组的两端的数都大于x时&#xff0c;直接返回 -1。 2. 当数组所有数之和小于 x 时 &#xff0c;直接返回 -1。 3. 数组中可以将 x 消除为0&#xff0c;那么可以从左边减小为 0 &#xff1b;可以从右边减小为 0 &#xff1…

10大在线头脑风暴工具,团队创新必备!

在线头脑风暴工具的使用为创意发展和团队协作提供了许多优势&#xff0c;使团队成员能够同时参与头脑风暴&#xff0c;促进创意的产生和交流。一款优秀的在线头脑风暴工具可以以直观的方式展示创意&#xff0c;激发创造力和想象力。此外&#xff0c;还具有组织和整理功能&#…

linux文本三剑客---grep,sed,awk

目录 grep 什么是grep&#xff1f; grep实例演示 命令参数&#xff1a; 案例演示&#xff1a; sed 概念&#xff1a; 常用选项&#xff1a; 案例演示&#xff1a; awk 概念&#xff1a; awk常用命令选项&#xff1a; awk变量&#xff1a; 内置变量 自定义变量 a…

npm install报错 -> npm ERR! Unexpected token ‘.‘ 报错解决办法。

问题原因&#xff1a; 用nvm1.1.7的版本安装了16.x以上的node, 然后再下载依赖的时候就报错了&#xff1b;总结一下就是nvm版本太低了&#xff0c;他的里面没有集成高版本node导致的。 解决办法&#xff1a; 把nvm切换到新版本就行了。 1. 卸载掉当前所有的node nvm unins…

Cadence学习

Cadence学习 Cadence内容涵盖Cadence主要功能Cadence功能模块Allegro Design Entry CIS 和 OrCAD Capture CIS 的区别Cadence 公司简介Allegro Design Entry CISOrCAD Capture CIS OrCAD中part和database part区别OrCAD中不同页面的连接关系应该怎么处理&#xff08;1&#xff…

MacBook安装Navicat Premium与注册

MacBook安装Navicat Premium与注册 参照下面的链接安装成功 https://www.52pojie.cn/forum.php?modviewthread&tid692132 https://blog.csdn.net/xhd731568849/article/details/79751188 https://blog.csdn.net/u013490280/article/details/79720893 https://blog.csdn.n…

基于Mediapipe的姿势识别并同步到Unity人体模型中

如题&#xff0c;由于是商业项目&#xff0c;无法公开源码&#xff0c;这里主要说一下实现此功能的思路。 人体关节点识别 基于Mediapipe Unity插件进行开发&#xff0c;性能比较低的CPU主机&#xff0c;无法流畅地运行Mediapipe&#xff0c;这个要注意一下。 Mediapipe33个人体…