代码随想录算法训练营Day57|LC647 回文子串LC516 最长回文子序列

一句话总结:最关键的是dp数组的定义。

 

原题链接:647 回文子串

按动规五部曲一步步进行分析:

  1. dp数组及其下标的定义:首先需要确定为二维数组,其中dp[i][j]表示区间[i, j]之中的子串是否为回文子串;
  2. 状态转移方程:如果s[i] == s[j],那么区间[i, j]之中的子串是否为回文子串还依赖于[i + 1, j - 1]之间的状态是否为true,即有 if (s[i] == s[j] && (dp[i + 1][j -1] || j - i <= 1)) {dp[i][j] = true;};如果s[i] != s[j],那么肯定dp[i][j]肯定就是false了;
  3. 状态方程的初始化:很明显对于每个单个的字符都是一个回文串,因此有dp[i][i] = true;
  4. 方程的遍历顺序:从状态转移方程可以看出,dp[i][j]的计算依赖于dp[i + 1][j - 1],因此对i的遍历需要从后往前,对j的计算需要从前往后;
  5. 举例推导dp数组。

最终代码如下:

class Solution {public int countSubstrings(String s) {int n = s.length();char[] cs = s.toCharArray();boolean[][] dp = new boolean[n][n];int ans = 0;for (int i = n - 1; i >= 0; --i) {for (int j = i; j < n; ++j) {if (cs[i] == cs[j] && (j - i <= 1 || dp[i + 1][j - 1])) {++ans;dp[i][j] = true;} }}return ans;}
}

 

原题链接:516 最长回文子序列

 

dp五部曲分析如下:

  1. dp数组及其下标的确定:dp[i][j]表示区间[i, j]之中的最长回文子序列的长度;
  2. 状态转移方程的推导:当s[i] == s[j]时,有dp[i][j] = dp[i + 1][j - 1] + 2;当s[i] != s[j]时,则有dp[i][j] = Math.max(dp[i][j - 1], dp[i + 1][j]);
  3.  类似于上题,dp[i][i] = 1;
  4. 类似于上题,i的遍历从后往前,j的遍历从前往后(由i开始);
  5. 举例推导dp数组:略。

最终代码如下:

class Solution {public int longestPalindromeSubseq(String s) {int n = s.length();char[] cs = s.toCharArray();int[][] dp = new int[n][n];for (int i = 0; i < n; ++i) dp[i][i] = 1;for (int i = n - 1; i >= 0; --i) {for (int j = i + 1; j < n; ++j) {if (cs[i] == cs[j]) dp[i][j] = dp[i + 1][j - 1] + 2;else dp[i][j] = Math.max(dp[i][j - 1], dp[i + 1][j]);}}return dp[0][n - 1];}
}

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

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

相关文章

模仿银行系统的极简Java三层结构应用——转账功能的实现

我们今天来给系统加上转账功能。转账功能说白了就是给两个账户同时存取款&#xff0c;相对于存取款就多了一个账户的比对。 首先&#xff0c;用户表现层&#xff1a; 是用户表现界面要添加一条转账功能的提示&#xff1a; 这没什么说的&#xff0c;下面就是在switch里写相应的…

浏览器工作原理与实践--HTTPS:让数据传输更安全

浏览器安全主要划分为三大块内容&#xff1a;页面安全、系统安全和网络安全。前面我们用四篇文章介绍了页面安全和系统安全&#xff0c;也聊了浏览器和Web开发者是如何应对各种类型的攻击&#xff0c;本文是我们专栏的最后一篇&#xff0c;我们就接着来聊聊网络安全协议HTTPS。…

如何把npm切换成yarn管理项目

1.删掉项目中package-lock.json和依赖包 这一步手动删掉就好 2.全局安装yarn npm install -g yarn 3.可以开始执行yarn install安装依赖 1&#xff09;执行yarn init 这一步是修改npm生成的package.json文件&#xff0c;可能会遇到这个问题&#xff1a; 这个查了一下是有…

Zabbix6.0监控入门

1. Zabbix 监控系统入门简介 Zabbix 是一个基于 WEB 界面的提供分布式系统监控的企业级的开源解决方案&#xff0c;Zabbix 能监视各种网络参数&#xff0c;保证服务器系统的安全稳定的运行&#xff0c;并提供灵活的通知机制以让 SA 快速定位并解决存在的各种问题。Zabbix 分布式…

[openGL] 高级光照-Gamma矫正

目录 一 Gamma是什么? 二 感知光度和物理光度 2.1 与Gamma的关系 2.3 存在问题和弊端? 三 Gamma矫正(逆Gamma) 3.1 Gamma矫正的两种方法 3.2 sRGB空间 3.3 重复校正 3.3.1 在着色器中处理重复校正 3.3.2 在加载纹理时就重复校正 3.3.3 校正前后效果 本章节Qt源码点…

第3关 - GoC模拟题3

GoC测试模拟题(2017.4.18)第1题&#xff1a;棱形(lx) 题目描述 棱形是四条边相等的四边形&#xff0c;但角度不确定。请编程画出如下图的边长为50&#xff0c;内角分别是45度和135度的棱形。 说明&#xff1a; 上图中红色数字是标明尺寸的&#xff0c;不需要画出。 输入格式…

SAM2695 法国追梦DREAM 音频DSP芯片

法国追梦/DERAM SAM5504/5704/5716/5808音频DSP芯片,开发板&#xff0c;方案 可用于电子鼓、电子琴、电吉他、效果器、均衡器、啸叫抑制器等电声产品领域 提供服务 全系列芯片&#xff1a; SAM2634 SAM2695 SAM5504B SAM5704B SAM5708B SAM5808B SAM5716B SAM5916B…

2024年五一杯数学建模C题思路分析

文章目录 1 赛题思路2 比赛日期和时间3 组织机构4 建模常见问题类型4.1 分类问题4.2 优化问题4.3 预测问题4.4 评价问题 5 建模资料 1 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 2 比赛日期和时间 报名截止时间&#xff1a;2024…

GPT国内能用吗

2022年11月&#xff0c;Open AI发布ChatGPT&#xff0c;ChatGPT展现了大型语模型在自然语言处理方面的惊人进步&#xff0c;其生成文本的流畅度和连贯性令人印象深刻&#xff0c;为AI应用打开了新的可能性。 ChatGPT的出现推动了AI技术在各个领域的应用&#xff0c;例如&#x…

postman汉化

一、postman历史版本下载&#xff1a;Postman 10.24.16 Download for Windows / Old Versions / FileHorse.comhttps://www.filehorse.com/download-postman/old-versions/ 二、汉化包下载&#xff1a; Releases hlmd/Postman-cn GitHubPostman汉化中文版. Contribute to h…

【详细】OSPF vs RIP

目录 内部网关协议IGP 按照算法原理分 按照适用范围分 两者优缺点比较 RIP协议 RIP的两个版本区别 RIPv2认证功能 RIP协议优缺点 RIP协议路由环路发生原理及处理方式 造成路由环路的原因&#xff1a; 路由环路的危害 路由环路解决方法​编辑 OSPF协议 Router-ID&a…

分类预测 | Matlab实现SSA-LSSVM麻雀算法优化最小二乘支持向量机数据分类预测

分类预测 | Matlab实现SSA-LSSVM麻雀算法优化最小二乘支持向量机数据分类预测 目录 分类预测 | Matlab实现SSA-LSSVM麻雀算法优化最小二乘支持向量机数据分类预测分类效果基本介绍程序设计参考资料 分类效果 基本介绍 1.Matlab实现SSA-LSSVM麻雀算法优化最小二乘支持向量机数据…

为什么用云渲染农场?3D云渲染农场助力影视动画行业发展

​计算机图形技术的进步使得3D渲染成为多个产业发展的重要推动力。设计师和艺术家利用这项技术将创意实现&#xff0c;创造出震撼的视觉作品。但是&#xff0c;高质量的渲染需要大量的计算资源。云渲染农场通过提供这些资源&#xff0c;有效提高了渲染的速度和效率&#xff0c;…

8.Jetson AGX Orin Ubuntu20.04 gRPC编译安装

Jetson AGX Orin Ubuntu20.04 gRPC编译安装 一、CMake版本检查 grpc编译cmake要求最低版本为3.15。首先&#xff0c;cmake -version 查看当前cmake版本&#xff0c;如果低于3.15&#xff0c;按照以下步骤进行安装。 1.1 卸载已经安装的旧版的CMake sudo apt-get autoremove…

【408直通车】C+Python赋能数据结构:从底层原理到高级应用的蜕变之路——线性表

本专栏旨在通过使用C语言和Python分别实现各种考研常见数据结构&#xff0c;从底层原理和应用两个角度深入探索数据结构。通过深入理解数据结构的底层原理和掌握Python的高级特性&#xff0c;读者将能够全面掌握数据结构的知识&#xff0c;并且学会如何在实际应用中灵活运用。 …

网工交换技术基础——VLAN原理

1、VLAN的概念&#xff1a; VLAN(Virtual LAN)&#xff0c;翻译成中文是“虚拟局域网”。LAN可以是由少数几台家用计算机构成的网络&#xff0c;也可以是数以百计的计算机构成的企业网络。VLAN所指的LAN特指使用路由器分割的网络——也就是广播域。 2、VLAN的主要作用&#xf…

假期必备!一款超级强大的视频终端下载工具,简洁又强大,24.5K star【文末送福利】

马上要五一了&#xff0c;假期想必少不了娱乐看电影电视剧&#xff0c;之前介绍了 Gopeed 这个支持全平台的下载神器。 今天再给大家介绍一个超级棒的命令行下载神器项目&#xff1a;Lux。 项目简介 Lux是一款用 Go 语言开发的视频下载库和 ClI 工具&#xff0c;拥有简洁的命…

【已解决】CondaError: Downloaded bytes did not match Content-Length

&#x1f60e; 作者介绍&#xff1a;我是程序员行者孙&#xff0c;一个热爱分享技术的制能工人。计算机本硕&#xff0c;人工制能研究生。公众号&#xff1a;AI Sun&#xff0c;视频号&#xff1a;AI-行者Sun &#x1f388; 本文专栏&#xff1a;本文收录于《AI实战中的各种bug…

springboot 人大金仓 kingbase-备份还原,命令中带密码,支持window和linux

命令带密码参考 Java代码实现国产人大金仓数据库备份还原需求-CSDN博客文章浏览阅读818次&#xff0c;点赞16次&#xff0c;收藏12次。本人在一次项目中&#xff0c;遇到了需要在系统管理中提供给用户备份还原系统数据的功能&#xff0c;由于项目特殊性&#xff0c;项目底层数…

vue实现文字转语音的组件,class类封装,实现项目介绍文字播放(2024-04-17)

1、项目界面截图 2、封装class类方法&#xff08;实例化调用&#xff09; // 语音播报的函数 export default class SpeakVoice {constructor(vm, config) {let that thisthat._vm vmthat.config {text: 春江潮水连海平&#xff0c;海上明月共潮生。滟滟随波千万里&#xf…