news 2026/10/20 8:14:39

LeetCode热题100--5. 最长回文子串--中等

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
LeetCode热题100--5. 最长回文子串--中等

题目

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

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

示例 2:
输入:s = “cbbd”
输出:“bb”

题解

classSolution{publicStringlongestPalindrome(Strings){if(s==null||s.length()<2){returns;}intstrLen=s.length();intmaxStart=0;//最长回文串的起点intmaxEnd=0;//最长回文串的终点intmaxLen=1;//最长回文串的长度boolean[][]dp=newboolean[strLen][strLen];for(intr=1;r<strLen;r++){for(intl=0;l<r;l++){if(s.charAt(l)==s.charAt(r)&&(r-l<=2||dp[l+1][r-1])){dp[l][r]=true;if(r-l+1>maxLen){maxLen=r-l+1;maxStart=l;maxEnd=r;}}}}returns.substring(maxStart,maxEnd+1);}}

解析

出自:中心扩散法和动态规划

classSolution{publicStringlongestPalindrome(Strings){// 如果字符串为空,或长度小于2(即0或1),直接返回原字符串(单个字符本身就是回文)if(s==null||s.length()<2){returns;}// 获取字符串的总长度intstrLen=s.length();// 记录最长回文子串的起始索引(包含)intmaxStart=0;// 记录最长回文子串的结束索引(包含)intmaxEnd=0;// 记录当前找到的最长回文子串的长度,初始为1(至少一个字符)intmaxLen=1;// 创建二维布尔数组 dp,dp[l][r] 表示子串 s[l...r] 是否为回文boolean[][]dp=newboolean[strLen][strLen];// 外层循环:遍历右边界 r,从1开始(因为长度为1的子串已是回文,无需处理)for(intr=1;r<strLen;r++){// 内层循环:遍历左边界 l,从0到r-1for(intl=0;l<r;l++){// 判断 s[l] 和 s[r] 是否相等,并且:// - 如果子串长度 <= 3(即 r - l <= 2,如 "aa" 或 "aba"),只要两端相等就是回文;// - 或者更长的子串,需依赖内部子串 s[l+1...r-1] 是否为回文(即 dp[l+1][r-1] 为 true)if(s.charAt(l)==s.charAt(r)&&(r-l<=2||dp[l+1][r-1])){// 标记 s[l...r] 为回文dp[l][r]=true;// 如果当前回文子串长度大于已记录的最大长度,则更新最大长度和起止位置if(r-l+1>maxLen){maxLen=r-l+1;// 更新最大长度maxStart=l;// 更新起始索引maxEnd=r;// 更新结束索引}}// 注意:如果 s[l] != s[r],dp[l][r] 默认为 false(无需显式赋值)}}// 使用 substring 提取最长回文子串(注意:substring 的 end 是 exclusive,所以 +1)returns.substring(maxStart,maxEnd+1);}}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/19 12:24:20

MySQL事件功能简介

MySQL 的事件调度器&#xff08;Event Scheduler&#xff09;提供了一种便捷的方法来定时执行 SQL 语句&#xff0c;从而实现数据维护、报告生成等自动化操作。本文将详细介绍 MySQL 的事件功能&#xff0c;并说明如何使用 Navicat 管理这些事件。 1. 什么是 MySQL 事件调度器&…

作者头像 李华
网站建设 2026/10/19 17:59:12

mysql之逻辑函数

MySQL 中的逻辑函数允许你根据条件对数据进行判断和选择。以下是一些常用逻辑函数的详细介绍和示例&#xff1a; IF(expr1, expr2, expr3) 如果 expr1 是真&#xff08;非零和非 NULL&#xff09;&#xff0c;IF() 函数返回 expr2&#xff0c;否则返回 expr3。 SELECT IF(1 0, …

作者头像 李华
网站建设 2026/10/19 14:07:46

光特通信40G光模块:适配各种需求的高速传输方案

在数据中心密集连接、企业园区网络升级、工业极端环境部署这些场景里&#xff0c;40G光模块是保证数据高速传输的核心部件。光特通信作为全球光通信解决方案服务商&#xff0c;有20年的技术积累&#xff0c;打造了全系列40G光模块产品&#xff0c;涵盖普通环境、长距离、工业恶…

作者头像 李华
网站建设 2026/10/19 19:39:23

都说网络安全前景好,到底好在哪?3 个数据给你答案

都说网络安全前景好&#xff0c;到底好在哪&#xff1f;3 个数据给你答案 数字化时代里&#xff0c;网络安全早已不是“可选项”而是“必选项”。从政府机关到互联网公司&#xff0c;从金融能源到日常消费&#xff0c;各行各业的安全防护需求持续爆发&#xff0c;让这个行业成…

作者头像 李华
网站建设 2026/10/19 19:39:13

MySQL中存储过程(详解,一篇就够了!!!)

一、MySQL中什么事存储过程&#xff1f; 存储过程是事先经过编译并存储在数据库中的一段SOL语句的集合&#xff0c;调用存储过程可以简化应用开发人员的很多工作&#xff0c;减少数据在数据库和应用服务器之间的传输&#xff0c;对于提高数据处理的效率是有好处的。存储过程思…

作者头像 李华