当前位置: 首页 > news >正文

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);}}
http://www.jsqmd.com/news/217139/

相关文章:

  • 【值得收藏】大模型RAG技术突破:12种创新架构全解析,助你掌握前沿检索增强生成技术
  • 深度学习毕设项目推荐-通过python_CNN卷积神经网络对辣椒类别识别
  • 2026年转行AI大模型必备:两个高薪岗位,让你年后求职弯道超车
  • ADVANCE Day45
  • 一文搞清微调技术的发展与演进
  • 【收藏】LLM大模型全景解析:从零开始理解AI智能的诞生
  • linux的root目录缓存清理
  • 破解文案困局:先知AI如何赋能男装卖点新表达?
  • 【课程设计/毕业设计】深度学习基于python-CNN卷积神经网络对土豆疾病识别基于python-CNN卷积神经网络对土豆疾病识别
  • 深度学习计算机毕设之通过python_CNN卷积神经网络对鸡蛋是否破损识别
  • mysql之联合索引
  • mysql之字符串函数
  • 大模型入门必看:一篇读懂AI大模型核心知识,建议收藏!
  • MySQL如何删除binlog日志文件
  • js遍历数组和对象的常用方法有哪些?
  • NAT技术:互联网连接的隐形桥梁
  • Redis的两个小错误
  • 深度学习计算机毕设之基于人工智能python-CNN卷积神经网络对土豆疾病识别基于python-CNN卷积神经网络对土豆疾病识别
  • mysql如何创建用户并且授权
  • Springboot校园二手交易平台lca16(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
  • 深度学习毕设项目:基于python-CNN卷积神经网络的水果识别
  • NSSCTF2026年1月8日每日一练之[第五空间 2021]WebFTP
  • ADVANCE Day44
  • 深度学习毕设项目:基于python-CNN卷积神经网络对土豆疾病识别基于python-CNN卷积神经网络对土豆疾病识别
  • vscode 指定插件安装位置
  • 剪切板推荐,pastemate代替win系统自带的
  • LangGraph1.0实战:构建自动邮件处理智能体,大模型应用开发指南
  • DeepSeek+Ollama+AnythingLLM搭建本地知识库,打造你的私人AI管家(建议收藏)
  • 从代码到上线 3 分钟:我如何用平台工程思路,彻底告别繁琐的 K8s 运维
  • 深度学习毕设项目:通过python_CNN卷积神经网络对鸡蛋是否破损识别