文章目录

  • 题目描述
  • 解法 & 代码:
    • 思路

题目描述

  • 回文:正着念和倒着念一样。

解法 & 代码:

  • 一开始看到子串,想着可能no.3最长重复子串一样用滑动窗口。不过回文串的判断会很麻烦,于是舍弃。
  • 之后看题解,用的是动态规划。

思路

  • 从短串,到长串循环,最终得到一个dp[][]二维矩阵,dp[i][j]代表S(i,j)是否是回文串。
  • 单个元素的情况,必然是回文串。dp[i][i]。
  • 两个元素的情况,根据S[i] == S[i+1]即可判断。
  • 多个元素的情况,根据dp[i+1][j-1]以及S[i] == S[j]即可判断。
  • 有了这三种情况,我们就有了状态转移方程。
  • 对于循环,可以看成是对于每一个子串长度,都从每一个左边界 i开始构成串:因此j > i的情况全算是false
class Solution {public String longestPalindrome(String s) {// 用dp(Dynamic Programming)int len = s.length();// 空间复杂度O(n*n)boolean[][] dp = new boolean[len][len];String ans = "";// 字串长度nowLenfor (int nowLen = 0; nowLen < len; nowLen++) {// 字串左边界ifor (int i = 0; i + nowLen < len; i++) {// 字串右边界int j = i + nowLen;// 子串单个元素的情况if (nowLen == 0) {dp[i][j] = true;}// 子串两个元素的情况else if (nowLen == 1) {dp[i][j] = (s.charAt(i) == s.charAt(j));}// 多个元素的情况:用之前的结果构造当前结果else {dp[i][j] = dp[i + 1][j - 1] && (s.charAt(i) == s.charAt(j));}if (ans.length() < j - i + 1 && dp[i][j]) {ans = s.substring(i, j + 1);}}}return ans;}
}
  • 时间复杂度:O(n2n^2n2):因为动态规划的状态总数为n2n^2n2,对于每一个状态进行转移的时间为O(1)
  • 空间复杂度:O(n2n^2n2):也就是dp[n][n],存储动态规划状态需要的空间。

【LeetCode笔记】5.最长回文子串(Java、动态规划、字符串)相关推荐

  1. java 最长回文_【Java】【每日算法/刷穿 LeetCode】5. 最长回文子串(中等)

    首页 专栏 java 文章详情 0 [每日算法/刷穿 LeetCode]5. 最长回文子串(中等) 宫水三叶发布于 今天 12:00 题目描述 给你一个字符串 s,找到 s 中最长的回文子串. 示例 ...

  2. LeetCode 5. 最长回文子串(动态规划)

    文章目录 1. 题目 2. 解题 2.1 自己写的DP 2.2 优化后的DP 2.3 中心扩展法 1. 题目 给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为 1000. ...

  3. leetcode算法题--最长回文子串

    题目链接:https://leetcode-cn.com/problems/longest-palindromic-substring/ 相关题目:最长回文子序列 动态规划 dp[i][j]表示从i到 ...

  4. 【LeetCode】5.最长回文子串

    5.最长回文子串 一.问题描述 给你一个字符串 s,找到 s 中最长的回文子串. 二.问题简化 所谓回文字符串,即反过来念的字符串和正着念一样.比如"卿卿我我卿卿"."一 ...

  5. 【LeetCode系列】最长回文子串(双指针中心扩散)与可怜的小猪(老鼠毒药问题)

    ⭐️前面的话⭐️ 本篇文章介绍来自牛客试题广场的两道题题解,分别为[最长回文子串]和[可怜的小猪],展示语言java.

  6. 最长回文子串Java

    求解最长回文子串的几种方法(Java版) LeetCode 5 给你一个字符串 s,找到 s 中最长的回文子串. 示例 1: 输入:s = "babad" 输出:"bab ...

  7. leetcode5. 最长回文子串(动态规划)

    给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为 1000. 示例 1: 输入: "babad" 输出: "bab" 注意: &qu ...

  8. [Leedcode][JAVA][第5题][最长回文子串][数组][动态规划]

    [问题描述][第5题][最长回文子串][中等] 给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为 1000.示例 1:输入: "babad" 输出: & ...

  9. 刻意练习:LeetCode实战 -- Task17. 最长回文子串

    背景 本篇图文是LSGO软件技术团队组织的 第二期基础算法(Leetcode)刻意练习训练营 的打卡任务.本期训练营采用分类别练习的模式,即选择了五个知识点(数组.链表.字符串.树.贪心算法),每个知 ...

  10. LeetCode实战:最长回文子串

    题目英文 Given a string s, find the longest palindromic substring in s. You may assume that the maximum ...

最新文章

  1. 在不同制作基础上该如何选择网页制作软件?
  2. 【Linux 内核】编译 Linux 内核 ① ( 下载指定版本的 Linux 内核源码 | Linux 内核版本号含义 | 主版本号 | 次版本号 | 小版本号 | 稳定版本 )
  3. python爬虫之urllib,伪装,超时设置,异常处理
  4. JetBrains下载历史版本
  5. python之语音识别(speech模块)
  6. 基于速度学习机的局部感受野
  7. appinfo信息管理系统_基于SSM框架的APP应用管理平台源码
  8. 微信小程序简单论坛实现demo,供参考。
  9. HTML颜色表及html代码(前端必备)
  10. Windows查看开关机记录
  11. 帝国cms ajax,帝国CMS注册体验加强 ajax检测用户名和密码
  12. SIPP测试使用指导
  13. 做事的常识 书籍梗概 小仓广
  14. Android:音乐播放器(3)—从播放列表到播放歌曲
  15. IDEA安装及配置jdk
  16. 图像预训练模型的起源解说和使用示例
  17. 用photoshop制作电子版签名图片
  18. [知了开发]“知了”APP整体设计
  19. 什么性格的人适合做好的程序员?
  20. Photoshop安装错误:无法写入注册表值。请检查权限。解决的办法居然是居然是居然是卸载到2345看图王

热门文章

  1. linux java输出到文件,linux java输出到文件内容
  2. docker port如何增加端口_docker部署redis实战
  3. python程序打包时出现lib not found_pyinstaller打包py脚本Warning:lib not found等相关问题...
  4. bs 程序用户个性化设置保存_想更改win10设置,这12种打开方法你不可不知,方便又快捷...
  5. python的matplotlib生成colorbar
  6. 1.MySQL数据库的介绍
  7. TCP/IP校验和(浅析+实例)
  8. Replace Error Code with Exception(以异常取代错误码)
  9. accept标头 php,如何在PHP中读取任何请求标头
  10. java单例方法_Java单例模式