【LeetCode】5. 最长回文子串

1 问题

给你一个字符串 s,找到 s 中最长的回文子串。

如果字符串的反序与原始字符串相同,则该字符串称为回文字符串。

示例 1:

输入:s = “babad”
输出:“bab”
解释:“aba” 同样是符合题意的答案。
示例 2:

输入:s = “cbbd”
输出:“bb”

2 答案

这题直接不会

2.1 动态规划法

class Solution:def longestPalindrome(self, s: str) -> str:n = len(s)if n < 2:  # 如果长度小于2,直接返回return smax_len = 1begin = 0dp = [[False] * n for _ in range(n)]for i in range(n):dp[i][i] = True   # 每个单独的字母都是一个回文子串for L in range(2, n + 1):for i in range(n):j = L + i - 1if j >= n:breakif s[i] != s[j]:dp[i][j] = False else:if j - i < 3:      # 如果两个相同是回文子串dp[i][j] = Trueelse:dp[i][j] = dp[i + 1][j - 1]  # 为了应对 aaaa 这样的长子串if dp[i][j] and j - i + 1 > max_len:max_len = j - i + 1begin = ireturn s[begin:begin + max_len]

这样写应该也是对的

class Solution:def longestPalindrome(self, s: str) -> str:n = len(s)if n < 2:return smax_length = 1begin = 0dp = [[False]*n for _ in range(n)]  # 动态规划列表for i in range(n):dp[i][i] = Truefor L in range(2, n+1):for i in range(n):j = L + i - 1  # L 子串大小if j >= n:breakif s[i] != s[j]:pass  # 与原版相比,改成了pass,因为一般默认为False,所以不用重新赋值为Falseelse:if L < 3:dp[i][j] = Trueelse:dp[i][j] = dp[i+1][j-1]if dp[i][j] == True and max_length < L:max_length = Lbegin = ireturn s[begin: begin+max_length]

3 知识点

在本题中,动态规划的状态转移方程为:

P ( i , j ) = P ( i + 1 , j − 1 ) ∧ ( S i = = S j ) P(i, j)=P(i+1, j-1) \wedge\left(S_i==S_j\right) P(i,j)=P(i+1,j1)(Si==Sj)

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

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

相关文章

【Codeforces】Codeforces Round 903 (Div. 3)【待补】

Dashboard - Codeforces Round 903 (Div. 3) - Codeforces Problem - C - Codeforces Problem - D - Codeforces

进程的虚拟地址空间

一、 对于C/C程序员&#xff0c;我们看到的程序中的地址&#xff0c;都不是物理地址&#xff0c;而是操作系统映射的虚拟地址/线性地址&#xff0c;每一个进程都映射了同样结构的虚拟地址空间&#xff0c;让进程以为自己在独享内存资源&#xff0c;下图是以Linux下32位操作系统…

spark stream入门案例:netcat准实时处理wordCount(scala 编程)

目录 案例需求 代码 结果 解析 案例需求&#xff1a; 使用netcat工具向9999端口不断的发送数据&#xff0c;通过SparkStreaming读取端口数据并统计不同单词出现的次数 -- 1. Spark从socket中获取数据&#xff1a;一行一行的获取 -- 2. Driver程序执行时&#xff0c…

Lock使用及效率分析(C#)

针对无Lock、Lock、ReadWriterLock、ReadWriterLockSlim四种方式&#xff0c;测试在连续写的情况下&#xff0c;读取的效率&#xff08;原子操作Interlocked由于使用针对int,double等修改的地方特别多&#xff0c;而且使用范围受限&#xff0c;所以本文章没有测试&#xff09; …

【C++ 成员函数与非成员函数:选择正确的工具】

在C编程中&#xff0c;成员函数和非成员函数都是关键的概念。它们提供了不同的方法来组织和处理代码&#xff0c;具有各自的优势和用途。本文将深入研究成员函数和非成员函数&#xff0c;以帮助您了解何时使用它们以及如何做出正确的选择。 成员函数&#xff1a;类的内在力量 …

服务器带宽和流量的关系

服务器带宽和流量的关系 我们经常听说带宽&#xff0c;流量等这样一些专用名词&#xff0c;平常生活中手机使用会用到&#xff0c;在IT行业搭建网站使用服务器也会用到&#xff0c;虽然这两个流量带宽意义上不全相同&#xff0c;但是毕竟是我们比较关注的内容。今天给大家说说…

C/C++笔试易错与高频题型图解知识点(二)—— C++部分(持续更新中)

目录 1.构造函数初始化列表 1.1 构造函数初始化列表与函数体内初始化区别 1.2 必须在初始化列表初始化的成员 2 引用&引用与指针的区别 2.1 引用初始化以后不能被改变&#xff0c;指针可以改变所指的对象 2.2 引用和指针的区别 3 构造函数与析构函数系列题 3.1构造函数与析…

2023大联盟6比赛总结

比赛链接 反思 A 为什么打表就我看不出规律&#xff01;&#xff01;&#xff01; 定式思维太严重了T_T B 纯智障分块题&#xff0c;不知道为什么 B 100 B100 B100 比理论最优 B 300 B300 B300 更优&#xff08;快了 3 倍&#xff09;&#xff0c;看来分块还是要学习一…

【LeetCode热题100】--287.寻找重复数

287.寻找重复数 方法&#xff1a;使用快慢指针 使用环形链表II的方法解题&#xff08;142.环形链表II&#xff09;&#xff0c;使用 142 题的思想来解决此题的关键是要理解如何将输入的数组看作为链表。 首先明确前提&#xff0c;整数的数组 nums 中的数字范围是 [1,n]。考虑一…

VScode无法跳转函数定义

VScode需要在当前工作环境下解析函数之间的依赖关系&#xff0c;如果工作环境是根目录/&#xff0c;扫描的文件范围会比/home/username/code大很多&#xff0c;导致VScode无法解析出函数依赖&#xff0c;也就无法跳转。 解决办法&#xff1a;将路径目录从高目录调整到较低的目…

【Qt控件之QDialogButtonBox】概述及使用

概述 QDialogButtonBox类是一个小部件&#xff0c;它以适合当前小部件样式的布局呈现按钮。 对话框和消息框通常以符合该台界面指南的布局呈现按钮。不同的平台会有不同的对话框布局。QDialogButtonBox允许发人员向其添加按钮&#xff0c;并将自使用用户的桌面环境所适合的布局…

数据结构--堆

一. 堆 1. 堆的概念 堆&#xff08;heap&#xff09;&#xff1a;一种有特殊用途的数据结构——用来在一组变化频繁&#xff08;发生增删查改的频率较高&#xff09;的数据集中查找最值。 堆在物理层面上&#xff0c;表现为一组连续的数组区间&#xff1a;long[] array &…

MySQl_2

目录 函数 一.字符串函数 二.数值函数 三.日期函数 四.流程控制函数 约束 多表查询 多表关系 一.内连接 二.外连接 三.自连接 四.联合查询 五.子查询 标量子查询 列子查询 行子查询 表子查询 函数 一.字符串函数 二.数值函数 SELECT LPAD(FLOOR(RAND()*1000000),…

二叉树与递归的相爱相杀

数据结构之二叉树 一、基于二叉树的基础操作1.二叉树的构建2.二叉树的遍历①前序遍历&#xff08;深度遍历&#xff09;②中序遍历③后序遍历④层序遍历判断一棵二叉树是否是完全二叉树&#xff08;基于层序遍历的思想&#xff09; 3.二叉树的数量问题①求二叉树结点个数②求二…

PixMIM论文笔记

论文名称&#xff1a;PixMIM: Rethinking Pixel Reconstruction in Masked Image Modeling 发表时间&#xff1a;2023 年 3 月 4 日 作者及组织&#xff1a;上海人工智能实验室、西蒙菲莎大学、香港中文大学 GitHub&#xff1a;https://github.com/open-mmlab/mmselfsup/tree/d…

transformer_01

一、传统RNN存在的问题 1.序列前序太长&#xff0c;每个xi要记住前面的特征&#xff0c;而且一直在学&#xff0c;没有忘记&#xff0c;可能特征不能学的太好 2.串行&#xff0c;层越多越慢&#xff0c;难以堆叠很多层&#xff1b; 3.只能看到过去&#xff0c;不能看到未来 搞…

什么是NetApp的DQP和如何安装DQP?

首先看看什么是DQP&#xff0c;DQPDisk Qualification Package&#xff0c;文字翻译就是磁盘验证包。按照NetApp的最佳实践&#xff0c;要定期升级DQP包&#xff0c;保证对最新磁盘和磁盘扩展柜的兼容。 本文主要介绍7-mode下如何升级DQP&#xff0c;至于cluster mode另外文章…

gazebo各种插件

类别 libgazebo_ros_api_plugin.so&#xff1a;提供与Gazebo仿真环境进行通信的API接口。 libgazebo_ros_block_laser.so&#xff1a;模拟激光传感器的插件。 libgazebo_ros_bumper.so&#xff1a;模拟碰撞传感器的插件。 libgazebo_ros_camera.so&#xff1a;模拟相机传感器的…

Linux Zabbix企业级监控平台+cpolar实现远程访问

文章目录 前言1. Linux 局域网访问Zabbix2. Linux 安装cpolar3. 配置Zabbix公网访问地址4. 公网远程访问Zabbix5. 固定Zabbix公网地址 前言 Zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。能监视各种网络参数&#xff0c;保证服务器系…

@RequestParam和@RequestBody部分使用场景总结

总结代码如下 package com.woer.receipt_callback.controller;import cn.hutool.log.StaticLog; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import org.springframework.web.bind.annotation.*;/*** 总结&#xff1a;* 一、Ge…