Leetcode题目【回文子串+回文子序列】

news2024/11/17 1:42:56

目录

  • 647. 回文子串
  • 5. 最长回文子串
  • 516. 最长回文子序列

647. 回文子串

  • 作为一个回文子串,主打的就是连续子串两边对称
  • 所以递推公式怎么想呢?子问题dp是一个成型的回文子串,当我左右两边加上相同的字符,才会再次构成当前的回文子串!

【dp数组的定义】:

  • 题目是求回文子串的个数。
  • 如果直观上用dp的子状态来存储子问题的回文串个数,当i、j位置上元素相等时,那此时确实是子问题的dp值加1,但是没法判断子问题它是不是回文串呀。
  • 所以这里的dp设计的是,当前子串是不是回文串,而不是当前子串包含的回文串的数量 。至于最后要求的数量,直接弄个变量进行累加就行了,dp数组都存好了是不是回文串,就不愁数量的计算了。
    在这里插入图片描述
class Solution:
    def countSubstrings(self, s: str) -> int:
        size = len(s)
        dp = [[0]*size for i in range(size)]  #开始时假设任意子串都不是回文的
        res = 0 

        for i in range(size-1, -1, -1): #i从大到小遍历
            for j in range(i, size): #j小于i的就不用考虑了,j从小到大遍历
                if s[i]==s[j]: #两边相等
                    if j-i<=1 or dp[i+1][j-1]==1: #长度是1或2,或子问题是回文串
                        dp[i][j] = 1
                        res += 1
        return res          

5. 最长回文子串

和上题本质一样,就是加个变量记录一下最大长度,记录下最大长度的左右边界

class Solution:
    def longestPalindrome(self, s: str) -> str:
        size = len(s)
        dp = [[0]*size for i in range(size)]  #开始时假设任意子串都不是回文的
        maxLen = 1
        l,r = 0,0

        for i in range(size-1, -1, -1): #i从大到小遍历
            for j in range(i, size): #j小于i的就不用考虑了,j从小到大遍历
                if s[i]==s[j]: #两边相等
                    if j-i<=1 or dp[i+1][j-1]==1: #只有1个或2个字符,或者子问题是回文的
                        dp[i][j] = 1
                        if j-i+1>maxLen: #更新最优值
                            maxLen = j-i+1
                            l,r = i,j

        return s[l:r+1]

516. 最长回文子序列

  • 这个题既然要求长度,那我们就让dp存长度值好了啦,一开始默认是0
  • 至于中间子问题是不是回文的,我不关心,因为我只考虑长度,即使中间不是回文的,那我只要两边是相等的,这俩就已经构成子序列,就有长度值啦
  • 和1143.最长公共子序列那个题类似,只要是子序列就涉及到退步,加个退步就解决了子序列和子串之间的差异。
class Solution:
    def longestPalindromeSubseq(self, s: str) -> int:
        size = len(s)
        # dp存储当前子序列最长回文串长度值
        dp = [[0]*size for i in range(size)]

        for i in range(size-1, -1, -1):
            for j in range(i, size):
                if s[i]==s[j]: #两边相等
                    if j-i<=1: #长度只有1或2
                        dp[i][j] = j-i+1 
                    else:
                        dp[i][j] = dp[i+1][j-1]+2 #超过两个数,此时就有有子问题了
                else: #两边不相等,就要退步了
                    dp[i][j] = max(dp[i][j-1], dp[i+1][j])
        
        return dp[0][size-1]

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

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

相关文章

Higress非K8S安装

Higress非K8S安装 文章目录 Higress非K8S安装环境安装安装higress进入到higress 的目录下修改下nacos的地址启动Higress登录higress管理页面 Higress 是基于阿里内部构建的下一代云原生网关&#xff0c;官网介绍&#xff1a;https://higress.io/zh-cn/docs/overview/what-is-hi…

lombok插件

懒人必备插件 1.安装&#xff1a; 2.在项目中导入lombok的jar包 <dependencies><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.28</version></dependency></depe…

flask的配置项

flask的配置项 为了使 Flask 应用程序正常运行&#xff0c;有多种配置选项需要考虑。下面是一些基本的 Flask 配置选项&#xff1a; DEBUG: 这个配置项决定 Flask 是否应该在调试模式下运行。如果这个值被设为 True&#xff0c;Flask 将会提供更详细的错误信息&#xff0c;并…

redis哨兵配置

首先哨兵需要三台服务器因为要选主服务器,一个主服务器两个备服务器.比主从复制要好一点就是不用手工切换主服务器 配置主从服务器需要主从复制为底层 vim /opt/redis-5.0.7/sentinel.conf 编辑哨兵配置文件 主和从的配置都是一样的 先启master&#xff0c;再启slave cd /op…

什么是ROC曲线

ROC曲线&#xff08;Receiver Operating Characteristic Curve&#xff09;&#xff0c;也称为“接受者操作特性曲线”。它最早应用于雷达信号检测的分析&#xff0c;后来广泛应用于心理学和医学领域。 ROC分析是进行临床诊断试验评价最常用的方法。诊断试验是指评价某种疾病诊…

树莓派微型 web 服务器——正式设计报告

树莓派微型web服务器 摘要 这篇博客介绍了一个基于树莓派的轻量级服务器项目。树莓派是一款低成本、小型化的单板计算机&#xff0c;具有较低的功耗和良好的可扩展性。该项目利用树莓派搭建了一个功能简洁但性能稳定的服务器环境&#xff0c;适用于小型应用或个人使用。该轻量…

flask 实现简单的登录系统demo

你提供的代码是一个基本的Flask应用程序&#xff0c;实现了一个简单的登录系统。以下是代码的详细解释&#xff1a; 1. 导入必要的模块&#xff1a;os 用于生成密钥&#xff0c;Flask 用于创建Web应用程序。 2. 创建Flask应用程序的实例&#xff0c;并为会话管理设置一个密钥。…

web-暴力破解密码

Burte Force&#xff08;暴力破解&#xff09;概述 暴力破解”是一攻击具手段&#xff0c;在web攻击中&#xff0c;一般会使用这种手段对应用系统的认证信息进行获取。 其过程就是使用大量的认证信息在认证接口进行尝试登录&#xff0c;直到得到正确的结果。 为了提高效率&…

都说软件测试没前途了?为何每年还会增加40万测试员

最近和一些刚进入软件测试行业的朋友交流&#xff0c;发现了一个有趣的现象&#xff0c;那就是对这个行业很多问题的认识是一致的、片面的&#xff0c;也可以理解为误解。利用你的时间列出他们对这个行业的所有误解&#xff0c;然后结合你多年的工作经验和你交流。毕竟你是从这…

WPS本地镜像化在线文档操作以及样例

一个客户项目有引进在线文档操作需求&#xff0c;让我这边做一个demo调研下&#xff0c;给我的对接文档里有相关方法的说明&#xff0c;照着对接即可。但在真正对接过程中还是踩过不少坑&#xff0c;这儿对之前的对接工作做个记录。 按照习惯先来一个效果&#xff1a; Demo下载…

应届生如何快速找Java开发工程师,先学会这17个基础问题

一、Java 基础 JDK 和 JRE 有什么区别&#xff1f; JDK&#xff1a;Java Development Kit 的简称&#xff0c;java 开发工具包&#xff0c;提供了 java 的开发环境和运行环境。 JRE&#xff1a;Java Runtime Environment 的简称&#xff0c;java 运行环境&#xff0c;为 java 的…

机器学习李宏毅学习笔记39

文章目录 前言一、大模型的发展趋势二、KNN LM总结 前言 大模型大资料 大模型的顿悟时刻 一、大模型的发展趋势 随数据量增加&#xff0c;模型可以从量变达到质变&#xff0c;从某一刻开始突然学会东西。 当成为大模型时&#xff0c;分数会从0,0突然变成100&#xff0c;完成“…

MySql001——初识数据库

一、什么是数据库 简单理解&#xff1a;数据库就是存放数据的仓库。 而仓库的作用就是往里面存东西&#xff08;入库&#xff09;&#xff0c;和从里面取东西&#xff08;出库&#xff09;。 二、数据库的作用 简单理解&#xff1a;数据库的作用就是存放数据。 互联网世界就是…

(el-radio)操作:Element-plus 中 Radio 单选框改成垂直排列的样式操作与使用

Ⅰ、Element-plus 提供的Radio单选框组件与想要目标情况的对比&#xff1a; 1、Element-plus 提供 Radio 组件情况&#xff1a; 其一、Element-ui 自提供的Radio代码情况为(示例的代码)&#xff1a; // Element-plus 自提供的代码&#xff1a; // 此时是使用了 ts 语言环境&a…

selenium进阶

Selenium进阶部分一 本篇建立在selenium基础部分之上&#xff0c;介绍了如条件判断&#xff0c;常用断言&#xff0c;文件截图操作&#xff0c;cookies操作和ActionChains库等常用操作 附带介绍了XPATH的用法 Selenium常用小操作 上传文件 实现原理&#xff1a;直接定位到…

基于Java+SpringBoot+vue前后端分离技术交流和分享平台设计实现

博主介绍&#xff1a;✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专…

7.28 作业 QT

手动完成服务器的实现&#xff0c;并具体程序要注释清楚: widget.h: #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QTcpServer> //服务器类 #include <QTcpSocket> //客户端类 #include <QMessageBox> //对话框类 #include …

瑞吉外卖项目 基于spring Boot+mybatis-plus开发 超详细笔记,有源码链接

源码地址&#xff1a;https://gitee.com/programmer-xiao-kai/reggie_tack_out 前置知识&#xff1a; Java基础知识Java Web vueSpring BootSSMMaven 软件开发流程 角色分工 项目经理:对整个项目负责&#xff0c;任务分配、把控进度产品经理:进行需求调研&#xff0c;输出需…

ubuntu远程控制小车 运行rviz时报错

我买的是wheeltec的小车&#xff0c;测试rgbd相机时想在ubuntu上的rviz中显示小车的姿态和看到的rgb和depth图&#xff0c;但是ubuntu中rostopic list和rviz都找不到小车发布的话题信息&#xff0c;运行rqt_image_view时可以显示图片信息。 最终wheeltec的技术人员lucas帮我找了…

AI 绘画Stable Diffusion 研究(一)sd整合包v4.2 版本安装说明

部署包作者:秋葉aaaki 免责声明: 本安装包及启动器免费提供 无任何盈利目的 大家好&#xff0c;我是风雨无阻。众所周知&#xff0c;StableDiffusion 是非常强大的AI绘图工具&#xff0c;需要详细了解StableDiffusion的朋友&#xff0c;可查看我之前的这篇文章&#xff1a; 最…