LeetCode 1143 最长公共子序列

news/2024/10/22 14:32:37/

题目: 给定两个字符串 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 。

思路:

dp[i][j]:以[0,i-1]的nums1和以[0,j-1]的nums2的最长公共子序列长度
如果这两个元素相同,那么就在排除这两个元素的基础上+1
for循环中使用的小于等于是因为,dp数组的定义
递归公式:
if(nums[i]==nums[j])dp[i][j] = dp[i-1][j-1]+1
else dp[i][j] = max(dp[i-1][j],dp[i][j-1])

class Solution {
public:int maxlength(string& text1, string& text2) {vector<vector<int>> dp(text1.size()+1,vector<int>(text2.size()+1,0));for (int i = 1; i <= text1.size();i++) {for (int j = 1; j <= text2.size();j++) {if (text1[i-1] == text2[j-1]) {dp[i][j] = dp[i - 1][j - 1] + 1;}else {dp[i][j] = max(dp[i][j-1],dp[i-1][j]);}}}return dp[text1.size()][text2.size()];}
};int main() {string text1 = "abcde";string text2 = "ace";Solution ss;cout << ss.maxlength(text1, text2) << endl;return 0;
}

http://www.ppmy.cn/news/93126.html

相关文章

JavaEE——阻塞式队列

文章目录 一、阻塞式队列二、生产者消费者模型1.发送方和接受方之间的 “解耦合”2. “削峰填谷”保证系统稳定性3、代码实现阻塞式队列 一、阻塞式队列 阻塞式队列&#xff0c;顾名思义也是一个队列&#xff0c;这个队列遵循的是先进先出的原则。 这里简单提一个特殊的队列&…

什么是智能合约存储布局?

本指南将解释智能合约中存储的数据。合约存储布局是指控制合约存储变量在长期内存中排布的规则。 读者先决条件知识 以下一般先决条件有助于理解本文&#xff1a; 熟悉面向对象的语言 位和字节 十六进制 智能合约 以太坊虚拟机&#xff08;EVM&#xff09; 哈希 无符号整数 静态…

【python之django1.11框架一】django环境搭建及基本操作

1. 环境准备 开发环境&#xff1a;windows 11先安装好miniconda3。镜像地址&#xff1a;https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/ 选择windows 64位下载。 下载地址&#xff1a; https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-lates…

学习【菜鸟教程】【C++ 类 对象】【C++ 类的静态成员】

链接 1. 教程 可以使用 static 关键字来把类成员定义为静态的。当我们声明类的成员为静态时&#xff0c;这意味着无论创建多少个类的对象&#xff0c;静态成员都只有一个副本。 静态成员在类的所有对象中是共享的。如果不存在其他的初始化语句&#xff0c;在创建第一个对象时…

队列:数据结构中的排队之道

本篇博客会讲解队列这种数据结构&#xff0c;并使用C语言实现。 概况 什么是队列呢&#xff1f;队列是一种先进先出的数据结构&#xff0c;即First In First Out&#xff0c;简称FIFO。队列有2端&#xff0c;分别是队头和队尾&#xff0c;规定只能在队尾插入数据&#xff08;…

UDP报头、TCP报头、IP报头、MAC头部、ARP头部

前言&#xff1a;DUP报头、TCP报头、IP报头、MAC头部、ARP头部。 UDP报头&#xff1a; UDP报头由八个字节组成&#xff0c;每个字段都是两个字节 &#xff1a; 1.源端口号&#xff1a;发送方端口号&#xff0c;需要对方回信的时候选用&#xff0c;不需要对方回信的时候置0 …

AGV/AMR控制器--科聪

AGV/AMR控制器--科聪 1 行业介绍1.1 控制器概念1.2 行业发展1.3 竞争格局 2 科聪控制器 MRC50002.1 介绍2.2 支持多种导航方式2.3 适配各种轮系底盘2.4 核心参数2.5 优势灵活的二次开发平台&#xff1a;机器人设计软件&#xff08;xRobotStudio&#xff09;完备的实施调试工具&…

Makefile基础教学(include的使用方法)

文章目录 前言一、include在makefile中的概念介绍二、include使用示例三、include中需要注意的一些操作1. 在include前加-选项2. include触发规则创建了文件会发生什么3. include包含的文件夹存在 总结 前言 本篇文章将讲解include的使用方法&#xff0c;在C语言中使用include…