【代码随想录刷题记录】 647. 回文子串 、 516.最长回文子序列

647. 回文子串

1、题目
给你一个字符串 s ,请你统计并返回这个字符串中 回文子串 的数目。

题目链接:https://leetcode.cn/problems/palindromic-substrings/

2、代码

class Solution {
public:
//判断字符串是否为回文bool IsPalindrome(string s, int start, int end){//特殊情况if(end < start) return false;if(end == start) return true;//一般情况for(int i = start, j = end; i <= j; i++, j--){if(s[i] != s[j]) return false;}return true;}int countSubstrings(string s) {//特殊情况if(s.size() <= 1) return s.size();//dp数组和初始化vector<int> dp(s.size(), 0);dp[0] = 1;//遍历for(int i = 1; i < s.size(); i++){for(int j = 0; j <= i; j++){if(IsPalindrome(s, j, i)) dp[i]++;}dp[i] += dp[i - 1];}return dp[s.size() - 1];}
};

3、小结
使用dp[i]表示字符串中0-i的字符串中回文的个数,通过内层循环判断添加第i个字符后增加的回文串个数再加上dp[i-1]即可得到答案。

516.最长回文子序列

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

题目链接:https://leetcode.cn/problems/longest-palindromic-subsequence/

2、代码

class Solution {
public:int longestPalindromeSubseq(string s) {//dp数组和初始化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() - 2; 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];}
};

3、小结
使用dp[i][j]表示字符串中i-j的最长回文串序列,将dp[i][i]均初始化为1,再根据s[i],s[j]的情况进行遍历递推。需要注意遍历是从上到下,从左到右。

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

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

相关文章

Linux基础(三)端口、进程及主机状态管理、环境变量、文件管理

目录 端口 nmap netstat 进程管理 查看进程 关闭进程 主机状态监控 系统资源top命令 磁盘信息监控 网络状态监控 环境变量 $符号 自己设置环境变量 自定义环境变量PATH Linux的文件和下载 压缩和解压 tar命令 zip和unzip命令 端口 每个电脑有一个ip地址&#xff…

Vue项目实现在线预览pdf,并且可以批量打印pdf

最近遇到一个需求,就是要在页面上呈现pdf内容,并且还能用打印机批量打印pdf,最终效果如下: 当用户在列表页面,勾选中两条数据后,点击“打印表单”按钮之后,会跳到如下的预览页面: 预览页面顶部有个吸顶的效果,然后下方就展示出了2个pdf文件对应的内容,我们接着点击“…

echarts 地图点击常见问题

echats 散点图不支持缩放 echarts 地图点击激活label如何去除 高德loca 1.4版本热力图报错 绘制的颜色区间是 0 --1 高德地图销毁不生效 自己傻逼&#xff0c;每次没有清空数组导致叠加数据&#xff0c;约点数据越多。 为何用高德地图district.search查询不到别的省数据&…

[微信小程序] movable-view 可移动视图容器 - 范围问题

movable-view 可移动视图容器 可移动视图容器&#xff0c;在页面中可以拖拽滑动。movable-view必须在 movable-area 组件中&#xff0c;并且必须是直接子节点 <view><movable-area style"width: 750rpx;height: 200rpx;background-color: gainsboro;">&l…

Java的数据结构-Map集合

文章目录 Map概述Map常用方法Map遍历元素的方法1.方法一&#xff1a;keySet()2.方法二&#xff1a;entrySet() HashMap Map概述 1、Map和collection没有继承关系2、Map集合以key和value的方式存储数据&#xff1a;键值对key和value都是引用数据类型。key和value都是存储对象的…

(栈队列堆) 剑指 Offer 31. 栈的压入、弹出序列 ——【Leetcode每日一题】

❓ 剑指 Offer 31. 栈的压入、弹出序列 难度&#xff1a;中等 输入两个整数序列&#xff0c;第一个序列表示栈的压入顺序&#xff0c;请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如&#xff0c;序列 {1,2,3,4,5} 是某栈的压栈序列&#xff0c;序…

Appium Android ——利用 TestNG 并行执行用例

目录 前言&#xff1a; 一、测试类 二、连接两个 Android 设备或启动两个虚拟机 三、项目路径下新建两个 testng.xml 四、开启两个 appium server 五、导出依赖 六、执行测试 七、查看报告 前言&#xff1a; Appium是一个流行的移动应用自动化测试工具&#xff0c;…

使用semanage管理SELinux安全策略

semanage命令用于管理SELinux的策略&#xff0c;格式为“semanage [选项] [文件]”。 SELinux服务极大地提升了Linux系统的安全性&#xff0c;将用户权限牢牢地锁在笼子里。semanage命令可以设置文件、目录的策略&#xff0c;还可以管理网络端口、消息接口。 常用参数&#xf…

vue3+vite配置 unplugin-vue-component 找不到 Vant 组件的问题

使用 vue3 vite Vant 搭建移动端项目&#xff0c;为了避免全量引入 vant 导致打包体积过大&#xff0c;又不想一个一个组件手动导入&#xff0c;所以就选择了 vant 官方推荐的方法&#xff0c;使用 unplugin-vue-components 插件自动引入组件&#xff0c;并按需引入组件的样式…

Qgis3.16ltr+VS2017二次开发环境搭建(保姆级教程)

1.二次开发环境搭建 下载osgeo4w-setup.exeDownload QGIShttps://www.qgis.org/en/site/forusers/download.html 点击OSGeo4W Network Installer 点击下载 OSGeo4W Installer 运行程序 osgeo4w-setup.exe&#xff0c;出现以下界面&#xff0c;点击下一页。 选中install from i…

详细讲解C++的可调用对象

详细讲解C的可调用对象 在C中&#xff0c;存在“可调用对象&#xff08;Callable Obiects&#xff09;这么一个概念。准确来说&#xff0c;可调用对象有如下几种定义&#xff1a; 是一个函数指针 是一个具有 operator() 成员函数的类对象&#xff08;仿函数&#xff09; 是一…

rollup打包js库 占位符替换成文件名和行号输出日志中定位报错位置

rollup 自定义插件进行代码替换 简易版问题&#xff1a;在打包的js库中有很多日志或者error的控制台输出&#xff0c;但是打包后的js调用报错后无法从控制台看到堆栈信息&#xff0c;无法定位报错的位置是在哪个文件的哪一行需求&#xff1a;能够从报错中观察到报错在哪个文件的…

力扣206. 反转链表

给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5] 输出&#xff1a;[5,4,3,2,1]示例 2&#xff1a; 输入&#xff1a;head [1,2] 输出&#xff1a;[2,1]示例 3&#xff1a; 输入&am…

MySQL进阶

目录 一、存储引擎 1、MySQL体系结构 2、存储引擎简介 3、存储引擎特点 InnoDB MyISAM Memory 4、存储引擎选择 二、索引 1、索引概述 2、索引结构 3、索引分类 4、索引语法 5、SQL性能分析 5.1 SQL执行频率 5.2 慢查询日志 5.3 profile详情 5.4 explain执行…

k8s dev环境怎么做到本地调试

列出所有的namespace kubens切换到指定的namespace kubens dev-gmmt 查看namespace 中存在那些service kubectl get services启动链接的服务和端口 kubectl port-forward service/cmdb 8081:8081该命令的含义是将Kubernetes集群中名为"cmdb"的服务的端口8081&…

Spring-Cloud-Gateway如何自定义断言工厂?

遇到这么一个面试题&#xff1a;如何在网关做配置&#xff0c;实现只有在早晨9点到下午18点之间接口才允许访问&#xff0c;其他时间访问都是404。 我们知道网关的一个重要的作用就是路由转发&#xff0c;路由表的配置大概是这个样子: spring:cloud:gateway:routes:- id: user…

Sentinel流量规则模块(新增)

系统并发能力有限&#xff0c;比如系统A的QPS支持1个请求&#xff0c;如果太多请求过来&#xff0c;那么系统A就应该进行流量控制了&#xff0c;比如其他请求直接拒绝 新增流控规则介绍:新增流控规则窗口 1.资源名&#xff1a;默认请求路径。 2.针对来源&#xff1a;Se…

基于51单片机和proteus的温室大棚系统

此系统是基于51单片机和proteus的仿真设计&#xff0c;功能如下&#xff1a; 1. LCD1602实时显示光照/土壤湿度/温度值及设定值。 2. 按键可增减光照/土壤湿度/温度设定阈值。 3. 获取到的温度低于设定温度则打开加热设备。 4. 获取到的光照值低于设定光照值则打开补光灯。…

【SpringBoot Web开发】如何构建树形结构数据

树形结构数据 应用场景 比如我们需要构建菜单、机构树、其他业务类型树形结构 工具类 我们可以把菜单列表返回&#xff0c;获取parent_id字段等于0的节点&#xff0c;称为根节点&#xff0c;这样的节点代表一级菜单再通过根节点的主键去寻找子菜单&#xff0c;因为要有多及菜…