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

力扣hot100 长回文子串 中心扩散法 动态规划 一题多解 满注释版

Problem: 5. 最长回文子串
在这里插入图片描述

文章目录

  • 思路
  • 💖 中心扩散法
  • 💖 DP

思路

👨‍🏫 参考

💖 中心扩散法

在这里插入图片描述

class Solution {public String longestPalindrome(String s) {if (s == null || s.length() < 2) {return s;}int strLen = s.length();int maxStart = 0;  //最长回文串的起点int maxEnd = 0;    //最长回文串的终点int maxLen = 1;  //最长回文串的长度boolean[][] dp = new boolean[strLen][strLen];for (int r = 1; r < strLen; r++) {for (int l = 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;}}}}return s.substring(maxStart, maxEnd + 1);}}

💖 DP

class Solution {public String longestPalindrome(String s){if (s == null || s.length() == 0)return "";int n = s.length();char[] ss = s.toCharArray();int maxLen = 1;int begin = 0;// 默认为 falseboolean[][] f = new boolean[n][n];// f[i][j] 表示 s的闭区间[i,j] 是否回文for (int i = 0; i < n; i++)f[i][i] = true;// 长度为 1 的所有子串都是回文的for (int k = 2; k <= n; k++)//先枚举长度{for (int i = 0; i < n; i++)//枚举起点{int j = k + i - 1;//枚举终点if (j >= n)//越界break;//当前的起点和终点相同;2,3个的情况 || 中间的是回文串if (ss[i] == ss[j] && (j - i < 3 || f[i + 1][j - 1]))f[i][j] = true;if (f[i][j] && j - i + 1 > maxLen){maxLen = j - i + 1;begin = i;}}}return s.substring(begin, begin + maxLen);}
}

相关文章:

  • 安卓相对布局RelativeLayout
  • Oracle篇—普通表迁移到分区表(第五篇,总共五篇)
  • 《A++ 敏捷开发》- 6 估算软件规模
  • vue核心知识点
  • 深入浅出 diffusion(3):pytorch 实现 diffusion 中的 U-Net
  • JavaScript入门
  • 如何快速记忆小鹤双拼键位图?
  • 递归再认识----【详解】内含迷宫和八皇后问题
  • 1.理解AOP,使用AOP
  • IP 层转发分组的过程
  • 基于ecal的foxglove studio可视化工具的使用
  • Pyroch中transforms 图像增强发方法的应用
  • 如何在 JavaScript 中使用 map() 迭代数组
  • 【Java基础】自定义类型处理器xxxTypeHandler
  • 【百度Apollo】自动驾驶规划技术:实现安全高效的智能驾驶
  • echarts花样作死的坑
  • Elasticsearch 参考指南(升级前重新索引)
  • ES6核心特性
  • LeetCode541. Reverse String II -- 按步长反转字符串
  • Python语法速览与机器学习开发环境搭建
  • Redux 中间件分析
  • SpingCloudBus整合RabbitMQ
  • Stream流与Lambda表达式(三) 静态工厂类Collectors
  • 给第三方使用接口的 URL 签名实现
  • 更好理解的面向对象的Javascript 1 —— 动态类型和多态
  • 看域名解析域名安全对SEO的影响
  • 聊聊hikari连接池的leakDetectionThreshold
  • 浏览器缓存机制分析
  • 使用 Node.js 的 nodemailer 模块发送邮件(支持 QQ、163 等、支持附件)
  • 我的面试准备过程--容器(更新中)
  • 用 vue 组件自定义 v-model, 实现一个 Tab 组件。
  • 你学不懂C语言,是因为不懂编写C程序的7个步骤 ...
  • ​低代码平台的核心价值与优势
  • (1/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (arch)linux 转换文件编码格式
  • (java版)排序算法----【冒泡,选择,插入,希尔,快速排序,归并排序,基数排序】超详细~~
  • (Matalb时序预测)WOA-BP鲸鱼算法优化BP神经网络的多维时序回归预测
  • (非本人原创)我们工作到底是为了什么?​——HP大中华区总裁孙振耀退休感言(r4笔记第60天)...
  • (简单) HDU 2612 Find a way,BFS。
  • (剑指Offer)面试题41:和为s的连续正数序列
  • (三十五)大数据实战——Superset可视化平台搭建
  • (已解决)vue+element-ui实现个人中心,仿照原神
  • (转)jQuery 基础
  • (转)linux自定义开机启动服务和chkconfig使用方法
  • (转)PlayerPrefs在Windows下存到哪里去了?
  • .bat批处理(十):从路径字符串中截取盘符、文件名、后缀名等信息
  • .describe() python_Python-Win32com-Excel
  • .NET 2.0中新增的一些TryGet,TryParse等方法
  • .NET CF命令行调试器MDbg入门(二) 设备模拟器
  • .NET Core 实现 Redis 批量查询指定格式的Key
  • .NET企业级应用架构设计系列之应用服务器
  • .Net组件程序设计之线程、并发管理(一)
  • /etc/sudoers (root权限管理)
  • ::什么意思
  • @requestBody写与不写的情况