【算法|动态规划No.27】leetcode516. 最长回文子序列

个人主页:兜里有颗棉花糖
欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创
收录于专栏【手撕算法系列专栏】【LeetCode】
🍔本专栏旨在提高自己算法能力的同时,记录一下自己的学习过程,希望对大家有所帮助
🍓希望我们一起努力、成长,共同进步。
在这里插入图片描述

点击直接跳转到该题目

目录

  • 1️⃣题目描述
  • 2️⃣题目解析
  • 3️⃣解题代码

1️⃣题目描述

给你一个字符串 s ,找出其中最长的回文子序列,并返回该序列的长度。

子序列定义为:不改变剩余字符顺序的情况下,删除某些字符或者不删除任何字符形成的一个序列。

示例1:

输入:s = “bbbab”
输出:4
解释:一个可能的最长回文子序列为 “bbbb” 。

示例2:

输入:s = “cbbd”
输出:2
解释:一个可能的最长回文子序列为 “bb” 。

注意:

  • 1 <= s.length <= 1000
  • s 仅由小写英文字母组成

2️⃣题目解析

状态表示:

  • dp[i][j]:表示区间[i,j]中所子序列中,最长回文子序列的长度。

状态转移方程:

  • if(s[i] == s[j])时:dp[i][j] = dp[i + 1][j - 1] + 2
  • if(s[i] != s[j])时:dp[i][j] = max(dp[i + 1][j],dp[i][j - 1])

注意:s[i] == s[j]时包含了三种小的情况:i == ji + 1 == j其它情况

返回值:

  • dp[0][n - 1]

3️⃣解题代码

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

最后就通过啦!!!

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

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

相关文章

快速自动化处理JavaScript渲染页面的方法

目录 一、使用无头浏览器 二、使用JavaScript渲染引擎 三、使用前端框架工具 随着互联网技术的不断发展&#xff0c;JavaScript已经成为Web开发中不可或缺的一部分。然而&#xff0c;在自动化处理JavaScript渲染页面方面&#xff0c;却常常让开发者感到头疼。本文将介绍一些快…

02 开闭原则

官方定义&#xff1a; 开闭原则规定软件中的对象、类、模块和函数对扩展应该是开放的&#xff0c;但对于修 改是封闭的。这意味着应该用抽象定义结构&#xff0c;用具体实现扩展细节&#xff0c;以此确保 软件系统开发和维护过程的可靠性。 通俗解释&#xff1a; 对扩展开放…

基础MySQL的语法练习

基础MySQL的语法练习 create table DEPT(DEPTNO int(2) not null,DNAME VARCHAR(14),LOC VARCHAR(13) );alter table DEPTadd constraint PK_DEPT primary key (DEPTNO);create table EMP (EMPNO int(4) primary key,ENAME VARCHAR(10),JOB VARCHAR(9),MGR …

运营商大数据精准营销,击碎你的固化营销思维

大数据精准营销服务是大数据应用的典型场景之一&#xff0c;也是依托大数据和互联网提升企业效率的一种有效手段。但是&#xff0c;在选择大数据服务的很多时候&#xff0c;企业往往要考虑法律与合规的问题&#xff0c;其中比较重要的是数据获取渠道与数据是否脱敏。在所有大数…

Labview2023安装教程 (最新最详细保姆级教程)

目录 一 .简介 二.安装步骤 软件&#xff1a;Labview版本&#xff1a;2023语言&#xff1a;简体中文大小&#xff1a;2.73G安装环境&#xff1a;Win11/Win10/Win8/Win7硬件要求&#xff1a;CPU2.6GHz 内存8G(或更高&#xff09;下载通道①百度网盘丨下载链接&#xff1a; htt…

英语——分享篇——每日200词——2401-2600

2401——moisture——[mɔɪstʃə(r)]——n.潮气&#xff0c;湿气&#xff0c;水分——moisture——moist潮湿的(熟词)ur你的(编码your)e鹅(编码)——潮湿的地方你的鹅一身潮气——Moisture in the atmosphere condensed into dew during the night.——大气中的水分在夜间凝结…

微信小程序设计之主体文件app-json-pages

一、新建一个项目 首先&#xff0c;下载微信小程序开发工具&#xff0c;具体下载方式可以参考文章《微信小程序开发者工具下载》。 然后&#xff0c;注册小程序账号&#xff0c;具体注册方法&#xff0c;可以参考文章《微信小程序个人账号申请和配置详细教程》。 在得到了测…

【论文解读】Prefix-Tuning: Optimizing Continuous Prompts for Generation

一.介绍 1.1 前置知识 1.1.1 in-context learning At the limit, GPT-3 (Brown et al, 2020) can be deployed using in-context learning, which is a form of prompting, without modifying any LM parameters. "部署" 指的是将 GPT-3 模型用于实际应用或特定任务…

遗传算法求解旅行商问题(含python源代码)

目录 前言 编码初始化种群 计算适应度 选择 交叉 变异 完整代码 总结 前言 这次的算法有一点不能确定是否正确&#xff0c;希望有大佬能够批评指正。 遗传算法的一般步骤 编码初始化种群 种群&#xff08;population&#xff09;指同一时间生活在一定自然区域内&…

C++ 继承

前言 本文将会为你带来关于继承的相关知识&#xff08;概念、定义、基类的成员变量访问形式、隐藏、父子类之间的赋值、派生类的默认成员函数、菱形继承与虚继承&#xff09; 继承的概念以及定义 继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段&…

ANR系列之八:疑难ANR问题处理记录

前言&#xff1a; 本文仅是记录作者自身处理过的ANR问题&#xff0c;以及帮助他人解决过的ANR问题。本文中所介绍的ANR处理记录仅供参考&#xff0c;并不适用所有场景。并且最终结论和分析并不一定就是绝对正确的。 案例1.页面切换时前台应用焦点未获得 案例编号&#xff1a;…

无代码的未来

随着无代码技术越来越成熟&#xff0c;很多web应用已经可以基于无代码平台进行开发。本文分析了4个最流行的无代码平台&#xff0c;并梳理了无代码行业今后可能的发展方向。原文: The future of NoCode 所有无代码编辑器都需要回答的问题 当需要选择无代码解决方案时&#xff0…

Vue基础语法核心指令过滤器计算属性监听属性

目录 1. 模板语法 1.1 插值 1.1.1 文本 1.1.2 html 1.1.3 属性 1.1.4 表达式 1.2 指令 1.2.1 核心指令 1.2.1.1 v-if |v-else-if|v-else 1.2.1.2 v-show 1.2.1.3 v-for 1.2.1.4 v-on|v-model|v-for 1.2.1.5 参数 v-bind:href,v-on:click 1.2.1.6 简写 2. 过滤器…

[AUTOSAR][网络管理] 什么是BusOff? 如何实现它?

文章目录 一、BusOff检测机制(1)简介(2)目录介绍(3)软件实现逻辑代码运行流程如下:二、测试方法(1)物理测试三、示例代码(1) busoff_recovery.c(2) busoff_recovery.h一、BusOff检测机制 (1)简介 CAN控制器可以判断出错误的类型是总线上暂时的数据错误(如外部干扰等…

Python中的内存管理:深入分析垃圾回收机制

python中有一个名为refchian的环状双向链表&#xff0c;python运行时创建的所有对象都会添加到refchain中。在refchain中的对象PyObject里都有一个ob_refcnt用来保存当前对象的引用计数器&#xff0c;就是该对象被引用的次数&#xff0c;当对象有新引用时ob_refcnt就会增加&…

西门子博途软件加密保护方法

一、程序块的专有技术保护 程序块的专有技术保护主要是对项目中的程序块&#xff08;OB、FB、FC、DB&#xff09;进行访问保护&#xff0c;如果没有专有技术保护密码则无法看到程序块中的具体内容&#xff0c;对于专有技术保护的 DB 块&#xff0c;如果没有密码只能读不能写。…

eNSP-OSPF协议其他区域不与骨干区域相连解决方法3

virtual-link技术 AR1 [ar1]int g0/0/0 [ar1-GigabitEthernet0/0/0]ip add 192.168.1.1 24 [ar1-GigabitEthernet0/0/0]quit [ar1]ospf [ar1-ospf-1]area 0 [ar1-ospf-1-area-0.0.0.0]net 192.168.1.0 0.0.0.255 [ar1-ospf-1-area-0.0.0.0]quit AR2 [ar2]int g0/0/0 [ar2-Gig…

skiaSharp linux 生成验码字体显示不出来

一、拷贝windows下的字体如&#xff1a;C:\Windows\Fonts 设置字体的地方&#xff1a; var fontPath Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Fonts", "TAHOMA.TTF");最终效果&#xff1a;

d3dx9_43.dll丢失怎么解决,四个解决方法帮你解决d3dx9_43.dll丢失

随着科技的不断发展&#xff0c;我们越来越依赖各种软件和硬件设备来提高生活和工作效率。然而&#xff0c;有时候我们可能会遇到一些技术问题&#xff0c;如“d3dx9_43.dll丢失”的问题。这个问题可能导致某些程序无法正常运行&#xff0c;给我们的生活带来诸多不便。因此&…

C++初阶--类与对象(1)

文章目录 类的引入类的定义访问限定符类成员的注意事项变量名的冲突 类的实例化类成员的声明与定义类的大小this指针特性 总结 类的引入 在c语言中&#xff0c;我们会这样写一个栈&#xff1a; struct Stack {int* a;int top;int capacity; };void StackInit(struct Stack* p…