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

2025年- H89-Lc197-- 5. 最长回文子串(多维动态规划)--Java版

1.题目描述

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

示例 1:

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

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

提示:

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

2.思路

外层 i 表示回文子串的右端点

内层 j 表示回文子串的左端点
输入:s = “abccba”
补充
我们来判断 s[1…4] = “bccb” 是不是回文

j = 1, i = 4

s[1] = ‘b’, s[4] = ‘b’ → 相等 ✅

那么只要 s[2…3] = “cc” 是不是回文 → dp[2] = true

在前一轮 i=3 的时候,已经计算过 dp[2] = true(因为 “cc” 是回文)

→ 所以 dp[1] = dp[2] = true,说明 “bccb” 是回文 ✅

3.代码实现

class Solution {public String longestPalindrome(String s) {//初始化起始索引int start=0;int end=0;boolean[] dp=new boolean[s.length()];// 枚举右端 ifor(int i=0;i<s.length();i++){// 枚举左端 j (0…i)for(int j=0;j<=i;j++){if(i==j){dp[j]=true;//比如单个字符a就是回文子串,子串长度为1}else if(j+1==i)//比如单个字符aa就是回文子串,子串长度为2{if(s.charAt(j)==s.charAt(i)){dp[j]=true;}else{dp[j]=false;}}else//aba情况, // 子串长度 ≥ 3{//那么中间的子串 s[j+1 … i-1] 是不是回文?if(s.charAt(j)==s.charAt(i)){//对于 s[j…i] 来说,只要两端相等并且中间部分 s[j+1…i-1] 是回文,那么整个就是回文//此时你已经算出上一轮 dp[j+1] 的结果,也就是 s[j+1…i-1] 是否是回文(注意右边 i 是当前轮固定的);//如果两端字符相等 s[j] == s[i] 且中间部分 s[j+1…i-1] 是回文(即 dp[j+1] == true),那么 s[j…i] 也是回文。dp[j]=dp[j+1];}else{dp[j]= false;}}if(dp[j]==true&&i-j>end-start){//是判断当前子串 s[j…i] 是否是最长的回文子串,如果是,就更新记录的起止下标end=i;start=j;}}}// s.substring(start, end) 是左闭右开区间。return s.substring( start,end+1);}
}

相关文章:

  • 【技术分享】XR技术体系浅析:VR、AR与MR的区别、联系与应用实践
  • Web开发中的多媒体元素
  • Spring核心技术底层实现详解
  • 在AI时代看清糖网:糖尿病视网膜病变筛查的转型之路
  • 软件设计模式期末复习模拟解析
  • DMDRS部署实施手册(ORACLE=》DM)
  • MySQL与Oracle视图:深入解析与全面对比
  • 设计模式 - 工厂方法
  • 科技资讯杂志科技资讯杂志社科技资讯编辑部2025年第9期目录
  • Android平台低延迟RTSP播放器架构设计解析
  • Java数据结构第二十四期:探秘 AVL 树,当二叉搜索树学会 “自我调节”
  • 图像处理基础篇
  • VR看房:房地产数字化转型的核心引擎
  • SpringBoot+Vue自习室座位预约系统
  • 零基础学习RabbitMQ(1)--概述
  • 在cursor中,配置jdk和maven环境,安装拓展插件
  • 驯服AI巨兽的秘密武器
  • 商品中心—11.商品B端搜索系统的实现文档一
  • Linux运维新人自用笔记(inode索引节点、删除文件原理、raid10、lvm逻辑卷)
  • 用安卓手机,怎样远程管理孩子iPhone屏幕使用时间?
  • 深圳网站制作07551/免费外国网站浏览器
  • 简阳建设网站公司/十大室内设计网站
  • 夜夜做新郎网站在线视频/网店代运营公司靠谱吗
  • wordpress最好的系统/优化大师手机版下载安装app
  • wordpress wp_head()优化/马鞍山网站seo
  • 房地产企业网站建设/微信营销推广软件