LeetCode 5. 最长回文子串

news2024/11/22 11:04:33

🌈🌈😄😄

欢迎来到茶色岛独家岛屿,本期将为大家揭晓LeetCode 5. 最长回文子串,做好准备了么,那么开始吧。

🌲🌲🐴🐴

一、题目名称

LeetCode 5. 最长回文子串

二、题目要求

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

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

三、相应举例

示例 1:

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

输入:s = "cbbd"
输出:"bb"

四、限制要求

  • 1 <= s.length <= 1000
  • s 仅由数字和英文字母组成

五、解决办法

动态规划

1.定义二维数组dp[length][length],如果dp[left][right]为true,则表示字符串从left到right是回文子串,如果dp[left][right]为false,则表示字符串从left到right不是回文子串。

2.如果dp[left+1][right-1]为true,我们判断s.charAt(left)和s.charAt(right)是否相等,如果相等,那么dp[left][right]肯定也是回文子串,否则dp[left][right]一定不是回文子串。

3.所以我们可以找出递推公式


 dp[left][right]=s.charAt(left)==s.charAt(right)&&dp[left+1][right-1]


4.确定边界条件:

如果s.charAt(left)!=s.charAt(right),那么字符串从left到right是不可能构成子串的,直接跳过即可。

如果s.charAt(left)==s.charAt(right),字符串从left到right能不能构成回文子串还需要进一步判断

如果left==right,也就是说只有一个字符,我们认为是回文子串。即dp[left][right]=true(left==right)
如果right-left<=2,类似于"aa",或者"aba",我们认为是回文子串。即dp[left][right]=true(right-left<=2)
如果right-left>2,我们只需要判断dp[left+1][right-1]是否是回文子串,才能确定dp[left][right]是否为true还是false。即dp[left][right]=dp[left+1][right-1]

六、代码实现

public static String longestPalindrome(String s) {
    //边界条件判断
    if (s.length() < 2)
        return s;
    //start表示最长回文串开始的位置,
    //maxLen表示最长回文串的长度
    int start = 0, maxLen = 1;
    int length = s.length();
    boolean[][] dp = new boolean[length][length];
    for (int right = 1; right < length; right++) {
        for (int left = 0; left < right; left++) {
            //如果两种字符不相同,肯定不能构成回文子串
            if (s.charAt(left) != s.charAt(right))
                continue;

            //下面是s.charAt(left)和s.charAt(right)两个
            //字符相同情况下的判断
            //如果只有一个字符,肯定是回文子串
            if (right == left) {
                dp[left][right] = true;
            } else if (right - left <= 2) {
                //类似于"aa"和"aba",也是回文子串
                dp[left][right] = true;
            } else {
                //类似于"a******a",要判断他是否是回文子串,只需要
                //判断"******"是否是回文子串即可
                dp[left][right] = dp[left + 1][right - 1];
            }
            //如果字符串从left到right是回文子串,只需要保存最长的即可
            if (dp[left][right] && right - left + 1 > maxLen) {
                maxLen = right - left + 1;
                start = left;
            }
        }
    }
    //截取最长的回文子串
    return s.substring(start, start + maxLen);
}

 

 

 

 

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

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

相关文章

1590_AURIX_TC275_PMU_Flash的操作

全部学习汇总&#xff1a; GreyZhang/g_TC275: happy hacking for TC275! (github.com) 这里提到的这个复位读取操作&#xff0c;复位的对象其实是当前的操作&#xff0c;也就是命令序列。主要是命令序列的最后一个命令还没有被接收到&#xff0c;都可以被这个命令中断。在复位…

目标检测:特征金字塔网络(Feature Pyramid Network)

目标检测&#xff1a;特征金字塔网络&#xff08;Feature Pyramid Network&#xff09;概述核心思想概述 由于在目标检测任务中&#xff0c;对与大目标的检测&#xff0c;需要feature map每个点的感受野大一点&#xff08;高层语义特征&#xff09;&#xff0c;对于小目标&…

GPIO 八种工作模式及其硬件框图

参考资料: STM32F1xx 官方资料:《STM32中文参考手册V10》- 第 8 章通用和复用功能 IO(GPIO 和 AFIO) GPIO 是通用输入/输出端口的简称,是 STM32 可控制的引脚。GPIO 的引脚与外部硬件设备连接,可实现与外部通讯、控制外部硬件或者采集外部硬件数据的功能。 STM32 的八种 …

图像融合笔记(一):RFN-Nest

RFN-NestAbstractIntroductionRelated worksThe proposed fusion frameworkThe architecture of the fusion networkTwo-stage training strategy论文&#xff1a; RFN-Nest: An end-to-end residual fusion network for infrared and visible images代码&#xff1a; https://…

[Android Input系统]MotionEvent的序列化传送

这里从云游戏的触控操作看起&#xff0c;PC端的客户端支持按键和鼠标滑动操作&#xff0c;手机上的云游戏客户端则是和手机游戏一样的touch触控&#xff0c;客户端的touch操作是怎样处理给服务端的呢&#xff0c;猜测是把touch操作“实时”的传送给了服务器&#xff0c;Android…

COM,Component Object Model 简介

COM&#xff0c;Component Object Model 简介 1. COM 是什么 COM 的英文全称是&#xff0c;Component Object Model&#xff0c;中文译为&#xff0c;组件对象模型。它官方的概念是&#xff1a; The Microsoft Component Object Model (COM) is a platform-independent, dis…

一个简单、功能完整的开源WMS​仓库管理系统

今天给大家推荐一个简单、功能完整的仓库管理系统。 项目简介 这是基于.NetCore 7、Vue 3开发的开源项目&#xff0c;支持中英文&#xff0c;界面简单清爽&#xff0c;采用前后端分离架构。 该项目主要是针对小型物流仓储供应链流程&#xff0c;采用的技术也都比较新&#x…

Redis基础配置之RDB持久化

测试环境&#xff1a; windows RDB的触发机制 save bgsave flushall 自动触发(配置文件配置) save命令触发&#xff1a; 触发方式 &#xff1a;首先手动删除dump.rdb文件。 当执行save命令时&#xff0c;自动生成dump.rdb文建测试成功 bgsave命令触发&#xff1a; 触…

jsp网络课程管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 JSP 网络课程管理系统 是一套完善的web设计系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统采用web模式开发&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发&#xff…

JVM内存组成简介

按照官方的说法&#xff1a;“Java 虚拟机具有一个堆&#xff0c;堆是运行时数据区域&#xff0c;所有类实例和数组的内存均从此处分配。堆是在 Java 虚拟机启动时创建的。”“在JVM中堆之外的内存称为非堆内存(Non-heap memory)”。可以看出JVM主要管理两种类型的内存&#xf…

【C语言航路】第十二站:自定义类型:结构体、枚举、联合体

目录 一、结构体 1.结构体的基础知识 2.结构体的声明 3.特殊的声明&#xff08;匿名结构体&#xff09; 4.结构体的自引用 5.结构体变量的定义和初始化 6.结构体的内存对齐 7.修改默认对齐数 8.结构体传参 二、位段 1.什么是位段 2.位段的内存分配 3.位段的跨平台问…

小程序目录结构和全局配置

小程序目录结构和全局配置小程序目录结构目录结构和web结构对比全局配置—pages & windows配置文件简介全局配置pages & window全局配置—tabBartabBar简介页面配置页面配置简介小程序目录结构 目录结构 和web结构对比 全局配置—pages & windows 配置文件简介 …

块级元素、行内元素、元素嵌套

HTML标签有两类&#xff1a;块级元素行内元素 &#xff08;1&#xff09;块级元素-默认总是在新行开始 div、h1~h6、blockquote、dl、dt、dd、form、hr、ol、p、pre、table、ul … 特点&#xff1a;总是在新行上开始&#xff0c;高度、行高以及顶和底边距都可控制&#xff0c;宽…

Kubernetes_HPA实践使用

文章目录一、前言二、配置APIServer和安装Metrics2.1 APIServer开启Aggregator2.2 安装Metrics Server (需要用到metris.yaml)安装metrics Server之前安装metrics Server之中全部命令实践演示安装metrics Server之后三、使用HPA测试 (需要使用到test.yaml&#xff0c;里面包括 …

明清专题数据库:企业匹配官办书局距离、科举考试、商帮文化变量等

一、企业到明清官办书局&#xff0c;印刷局的最小距离测算 以明清进士数量的地域分布测度儒家文化的历史积淀&#xff0c;使用企业到古代印刷局的距离作为工具变量解决内生性问题&#xff01; 数据来源&#xff1a;自主整理 时间跨度&#xff1a;-- 区域范围&#xff1a;全国…

第十四届蓝桥杯单片机组学习笔记(1):点亮板子第一个LED

点亮板子第一个LED前言单片机IO控制M74HC573M1R-数据锁存器74HC138-38译码器代码前言 使用CT107D实验板子的时候可以看到为了IO口对多个外设的复用&#xff0c;所以板子使用了几个锁存器来对LED、数码管、蜂鸣器等外设进行了一个选择&#xff0c;最后再使用38译码器来使用三个…

如何对时间序列进行小波分析,得出其周期?

从信号处理角度进行分析 简单的时间序列直接做各种谱分析&#xff08;频谱&#xff0c;包络谱&#xff0c;平方包络谱&#xff0c;功率谱&#xff0c;倒谱等等&#xff09; 比如一些简单的旋转机械振动时间序列信号 ​如果频谱不好分析&#xff0c;那可以分析如下图所示的时间序…

FL Studio21最新版数字音频工作站(DAW)

FL Studio21首先提供了音符编辑器&#xff0c;编辑器可以针对音乐创作人的要求编辑出不同音律的节奏&#xff0c;例如鼓&#xff0c;镲&#xff0c;锣&#xff0c;钢琴&#xff0c;笛&#xff0c;大提琴&#xff0c;筝&#xff0c;扬琴等等任何乐器在音乐中的配乐。 水果音乐制…

【Linux C编程-高级篇】换行回车探讨printf行缓冲write函数掉电保护线程安全相关

换行回车探讨 \r : 回车&#xff0c;定位到本行开头\n : 换行&#xff0c;光标移到下一行\r\n : 将光标移动到下一行开头windows 下&#xff0c;每行结尾 \r\n类unix&#xff0c;每行结尾 \nMac系统&#xff0c;每行结尾\r \r\n&#xff0c;windows下好像改善了&#xff0c;使…

全文最详细的Apache的管理及优化Web(图文详解)

目录 前言 一、Apache的安装及启用 二、Apache的基本信息 三、Apache的基本配置及修改 1、默认发布文件 2、Apache端口修改 3、默认发布目录 三、Apache的访问控制 1、基于客户端ip的访问控制 2、基于用户认证 四、Apache的虚拟主机 五、Apache的语言支持 六…