非科班菜鸡算法学习记录 | 代码随想录算法训练营第57天|| 647. 回文子串 516.最长回文子序列 动态规划总结篇

news2024/11/26 4:45:28


647. 回文子串

知识点:动规
状态:看思路自己写
思路:

dp不好想,dp[i][j] 是指左闭右闭时,是否为回文,bool类型;

注意递归公式和遍历顺序

class Solution {
public:
    int countSubstrings(string s) {
        int res=0;
        vector<vector<bool>> dp(s.size(),vector<bool>(s.size(), false));
        //dp[i][j] 是指左闭右闭时,是否为回文,bool
        // s[i] != s[j] 时,肯定不是回文
        //相等时,三种情况,1. i和j也相等,回文 2. i和j差一,回文 3. 差的大于1,看dp[i+1][j-1]时候是回文
        for(int i = s.size() - 1 ;  0<=i; i-- ) {
            for(int j = i; j < s.size(); j++){
                if( s[i] == s[j]) {
                    if( j - i <= 1) {
                        res++;
                        dp[i][j] = true;
                    }
                    else if( dp[i+1][j-1] ){
                        res++;
                        dp[i][j] = true;
                    }
                }
            }
        }
        return res;
    }
};


516. 最长回文子序列

知识点:动规
状态:不会
思路:

dp[i][j]:字符串s在[i, j]范围内最长的回文子序列的长度为dp[i][j]

在判断回文子串的题目中,关键逻辑就是看s[i]与s[j]是否相同。

如果s[i]与s[j]相同,那么dp[i][j] = dp[i + 1][j - 1] + 2;

如果s[i]与s[j]不相同,说明s[i]和s[j]的同时加入 并不能增加[i,j]区间回文子串的长度,那么分别加入s[i]、s[j]看看哪一个可以组成最长的回文子序列。

加入s[j]的回文子序列长度为dp[i + 1][j]。

加入s[i]的回文子序列长度为dp[i][j - 1]。

那么dp[i][j]一定是取最大的,即:dp[i][j] = max(dp[i + 1][j], dp[i][j - 1]);

初始化:当i与j相同,那么dp[i][j]一定是等于1的,即:一个字符的回文子序列长度就是1。

class Solution {
public:
    int longestPalindromeSubseq(string s) {
        vector<vector<int>> dp(s.size(), vector<int>(s.size(), 0));
        for (int i = 0; i < s.size(); i++) dp[i][i] = 1;
        for (int i = s.size() - 1; i >= 0; i--) {
            for (int j = i + 1; j < s.size(); 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][s.size() - 1];
    }
};

卡哥总结:

代码随想录 (programmercarl.com)

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

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

相关文章

智慧厂区能源管理平台:打造绿色高效产业新生态

随着工业4.0时代的到来&#xff0c;企业对能源管理的需求不断提高&#xff0c;传统的能源管理方式已经无法满足现代企业的发展需求。为了降低能源消耗、提高能源利用效率、减少环境污染&#xff0c;越来越多的企业开始关注智慧厂区能源管理平台。本文将从智慧厂区能源管理平台的…

塘鹅优化算法(GOA)(含MATLAB代码)

先做一个声明&#xff1a;文章是由我的个人公众号中的推送直接复制粘贴而来&#xff0c;因此对智能优化算法感兴趣的朋友&#xff0c;可关注我的个人公众号&#xff1a;启发式算法讨论。我会不定期在公众号里分享不同的智能优化算法&#xff0c;经典的&#xff0c;或者是近几年…

Qt打开及创建项目,运行程序(1)

安装之后&#xff0c; 1.文件->新建文件或项目 2.Application->Qt Widgets Application 3.自己设置名称和路径 4.这一步非常非常重要&#xff0c;要选择编译器&#xff0c;&#xff08;MinGW是可以在Qt里用&#xff0c;如果想与VS交互&#xff0c;要选择MSVC&#xff09…

下载配置 maven并在 idea 上应用

目录 一 maven 定义 二 Maven特点 三 Maven仓库 四 安装配置maven 步骤一:准备安装包,解压 步骤二:配置maven的环境变量 步骤三:测试maven的环境变量是否配置成功 步骤四:配置maven本地仓库 步骤五:阿里云、腾讯镜像配置 步骤六:全局配置idea的maven路径 步骤七:创建…

Linux 系统服务日志查询 journalctl:查询 systemd 日记

journalctl&#xff1a;查询 systemd 日记 systemd 在取代 SUSE Linux Enterprise 12 中的传统 init 脚本时&#xff08;参见第 13 章 “systemd 守护程序”&#xff09;&#xff0c;引入了自身的称为日记的日志记录系统。由于所有系统事件都将写入到日记中&#xff0c;因此&a…

51单片机电子钟六位数码管显示整点提醒仿真设计( proteus仿真+程序+原理图+报告+讲解视频)

51单片机电子钟六位数码管显示整点提醒仿真设计( proteus仿真程序原理图报告讲解视频&#xff09; 1.主要功能&#xff1a;2.仿真3. 程序代码4. 原理图参考元器件清单 5. 设计报告6. 设计资料内容清单 51单片机电子钟六位数码管显示整点提醒仿真设计( proteus仿真程序原理图报告…

webassembly入门篇

背景 随着职业的发展看到的东西也越来越多&#xff0c;webassembly也慢慢进入了视野。老哥铁柱公司做渲染用到webassembly、有幸参加掘金前端沙龙线下活动大佬们也在讲webassembly&#xff08;大佬叫它wasm&#xff09;等等&#xff0c;wasm有强于js的性能以及各种低级语言&…

软件架构师 Debugging

软件架构师 Debugging 目录概述需求&#xff1a; 设计思路实现思路分析 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , show your perfect code,full busy&#xff0c;skip hardness,make a better result,wait for change,challenge Survi…

YOLOv8:官方项目训练

1. 基础解读 detect/train.py中有DetectionTrainer类&#xff0c;继承自BaseTrainer类&#xff0c;并实现了诸如get_dataloader, get_model等接口。 setup_model接口用于准备模型&#xff0c;首先会检查self.model是否是torch.nn.Module&#xff0c;即已经是导入的模型。如果不…

浅谈外贸独立站必须配置SSL证书的必要性

在互联网时代&#xff0c;外贸独立站已经成为了各行各业企业开拓海外市场的重要途径。而在网络安全问题日益凸显的当今&#xff0c;保护数据传输安全成为当今重要的议题。为了保护用户隐私和数据安全&#xff0c;配置SSL证书已经变得尤为重要。 SSL证书&#xff0c;即安全套接…

苍穹外卖集成 Apache POI Java实现Excel文件的读写下载

苍穹外卖 day12 Echats 营业台数据可视化整合_软工菜鸡的博客-CSDN博客 Apache POI - the Java API for Microsoft Documents Project News 16 September 2022 - POI 5.2.3 available The Apache POI team is pleased to announce the release of 5.2.3. Several dependencies …

VBA技术资料MF53:VBA_突出显示大于某值的单元格

【分享成果&#xff0c;随喜正能量】理解自己&#xff0c;成为自己。流水不腐&#xff0c;户枢不蠹。清楚自己的需求&#xff0c;把握自己的节奏&#xff0c;不迷茫&#xff0c;不徘徊&#xff0c;朝着自己认为对的方向一路向前。人这一生最重要的是做好两件事&#xff1a;做自…

激光焊接汽车尼龙塑料配件透光率测试仪

激光塑性成型技术是近年来塑性加工界出现的一种新技术。通常塑料主要是通过加热加压依赖模具成型。这对于单品种、大批量生产是有效的&#xff1b;而对于各种不同形状的塑料制件则需要昂贵的模具‚装置也较庞大。 高度聚焦的激光束垂直照射在待变形的板料上‚由于塑料直接吸收激…

渗透测试漏洞原理之---【业务安全】

文章目录 1、业务安全概述1.1业务安全现状1.1.1、业务逻辑漏洞1.1.2、黑客攻击目标 2、业务安全测试2.1、业务安全测试流程2.1.1、测试准备2.1.2、业务调研2.1.3、业务建模2.1.4、业务流程梳理2.1.5、业务风险点识别2.1.6 开展测试2.1.7 撰写报告 3、业务安全经典场景3.1、业务…

什么是高可用,如何实现高可用

公众号阿里技术(ID&#xff1a;ali_tech) 什么是高可用 无论是一个域&#xff0c;一个 BG&#xff0c;还是一个站点&#xff0c;虽然范围有大有小&#xff0c;对象有所不同&#xff0c;但其高可用的理念都是相通的&#xff0c;今天将自己对高可用的一点点思考以及总结的“nPRT …

海光异构智能计算专区上线飞桨AI Studio!

近日&#xff0c;海光异构智能计算专区正式上线飞桨AI Studio(星河社区)。专区内容来自官方发布和社区贡献&#xff0c;包含双方产品合作成果、行业解决方案、优秀项目展示等&#xff0c;致力于帮助开发者快速了解体验飞桨、为海光异构智能计算软硬协同优化带来更高性能提升。 …

数据结构与算法学习(day5)——队列算法

前言 本章我们学习队列。 本章的学习目标&#xff1a; &#xff08;1&#xff09;能够使用队列算法解决简单的实际问题。 &#xff08;2&#xff09;能够用结构体来优化队列算法&#xff0c;并实际应用中使用。 题目 先看题目&#xff0c;题目就是应用场景&#xff0c;先明白是…

AP5101C 高压线性恒流IC 宽电压6-100V LED汽车大灯照明 台灯LED矿灯 指示灯电源驱动

产品描述 AP5101C 是一款高压线性 LED 恒流芯片 &#xff0c; 外围简单 、 内置功率管 &#xff0c; 适用于6- 100V 输入的高精度降压 LED 恒流驱动芯片。电流2.0A。AP5101C 可实现内置MOS 做 2.0A,外置 MOS 可做 3.0A 的。AP5101C 内置温度保护功能 &#xff0c;温度保护点为…

Jenkins Jenkinsfile管理 Pipeline script from SCM

一、Jenkinsfile理解 Jenkins Pipeline 提供了一套可扩展的工具&#xff0c;用于将“简单到复杂”的交付流程实现为“持续交付即代码”。Jenkins Pipeline 的定义通常被写入到一个文本文件&#xff08;称为 Jenkinsfile &#xff09;中&#xff0c;该文件可以被放入项目的源代码…

「通信原理」格雷码的生成与破译

「通信原理」格雷码的生成与破译 格雷码&#xff0c;gray code&#xff0c;相邻两数之间只有一个bit发生了改变&#xff0c;因此相比于自然编码的二进制系统&#xff0c;格雷编码的更不容易出错。使用卡诺图化简布尔代数式的时候&#xff0c;也会用到格雷码。本文将介绍三种格…