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

2025年--Lc192-5. 最长回文子串(动态规划在字符串的应用)--Java版

1.题目

在这里插入图片描述

2.思路

(1)dp[l][r]:从i到j这段字符串是不是为回文
(2)遍历顺序,right指针从1开始,left指针从0开始,
dp[left + 1][right - 1]表示 去掉首尾字符后 的那段子串是否是回文。
(3)我们现在在判断子串 s[left … right] 是否是回文。
s.charAt(left):左边字符
s.charAt(right):右边字符

左右两边相等:s[left] == s[right]

中间部分 s[left+1 … right-1] 也是回文

那整个字符串 s[left … right] 也一定是回文。

s = "ababa"

假设我们现在想判断 s[0…4] = “ababa” 是否是回文。

首尾字符 s[0] = ‘a’,s[4] = ‘a’ ✅ 相等

那我们就看中间部分 “bab”(也就是 s[1…3])是不是回文。
dp[1][3]:表示的就是 “bab” 是否为回文。
dp[1][3] == true ✅(即 “bab” 是回文)→ 所以 dp[0][4] = true ✅
maxLen = right - left + 1; // = 5
maxStart = left; // = 0
maxEnd = right; // = 4
(4)遍历顺序
right指针要从1开始,从 长度 ≥ 2 的子串 开始检查。
如果right指针从0开始,那么那子串就只有一个字符,比如 “a”,一个字符一定是回文,所以在初始化阶段会被设置成true
left 从 0 开始,要检查所有从 0 到 right 之间的子串,
在这里插入图片描述
left 要从 0 一直遍历到 right - 1,覆盖所有可能的起点。
因为我们只关心 起点 < 终点 的子串。
当 left == right 时,子串只有一个字符(已经在初始化阶段处理了)。
当 left > right 时,就不构成合法的子串了。

(right - left <= 2) 表示子串的长度 ≤ 3 时,不需要看 dp[left + 1][right - 1]。
dp[left + 1][right - 1]可能初始化就是false ,就不会等于true了
在这里插入图片描述
例子
在这里插入图片描述

3.代码实现

class Solution {public String longestPalindrome(String s) {//空字符串或单个字符串if(s.length()==0||s.length()==1){return s;}//字符串的长度int n=s.length();//定义dp[i][j]数组:表示从i到j这段字符串是否为回文boolean[][] dp=new boolean[n][n];//定义最长回文串的起始索引int maxBegin=0;//定义最长回文串的结束索引int maxEnd=0;//定义最大回文串的长度,单个字符也是回文串int maxLen=1;//遍历顺序,right指针,left指针for(int right=1;right<n;right++){for(int left=0;left<right;left++){if(s.charAt(left)==s.charAt(right)&&(right-left<=2||dp[left+1][right-1]==true)){dp[left][right]=true;// 只在更长时更新if(right-left+1>maxLen){//如果此时的长度大于初始化的长度maxLen=right-left+1;maxBegin=left;maxEnd=right;}}}}return s.substring(maxBegin,maxEnd+1);}
}
http://www.dtcms.com/a/491033.html

相关文章:

  • Docker容器化核心知识体系:从入门到实践
  • 华为云建站怎么样安徽先锋网站两学一做
  • 驾驭Excel数据:使用C#将Excel导出为DataTable的实战指南
  • LeetCode 400 - 第 N 位数字
  • 团购网站开发的可行性分析营销推广渠道有哪些
  • SHA-256 算法
  • 淘宝网官方网站购物商城电子邮件免费注册
  • 网站策划薪资大型网站开发团队
  • 广西建设质监站官方网站成都装修公司招聘装修工人
  • 了解学习Python编程之python基础
  • html5 手机网站页面实例创建全国文明城市宣传栏
  • 10.16QT,mmm
  • 免费做长图网站商城源码价格低 质量好
  • YOLOv1/v2
  • 算法专题十二:二叉树的深搜
  • 建设旅游信息网站的好处职业学院网站建设
  • 【vue】设置时间格式
  • 泰安网站建设方案为网站做一则广告
  • 23种设计模式——状态模式(State Pattern)
  • 管理系统布局框架中都包含哪些要素?导航、面包屑、tab等
  • 制作企业网站的app如何做网校网站
  • 卷积值提取
  • [Android] Alarm Clock Pro 11.1.0一款经典简约个性的时钟
  • 【机器学习算法篇】K-近邻算法
  • K8S高可用集群-二进制部署 + nginx-proxy静态Pod版本
  • 使用Open CASCADE和BRepOffsetAPI_MakePipeShell创建螺旋槽钻头三维模型
  • 邯郸网站制作多少钱网站如何收录
  • 如何区分Android、Android Automotive、Android Auto
  • 企业融资方式有哪几种淄博网站seo价格
  • python - 第五天