给定一个字符串s,找到s中最长的回文子串。你可以假设s的最大长度为1000。

示例1:
 * 输入:"babad"
 * 输出:"bab"
 * 注意:"aba"也是一个有效答案。

示例2:
 * 输入:"cbbd"
 * 输出:"bb"

public class LongestPalindrome {public static void main(String[] args) {System.out.println("cbbb: " + longestPalindrome("bba"));}public static String longestPalindrome(String s) {if (StringUtils.isBlank(s)) return "";String[] ss = s.split("");// 最长回文子串长度int start = 0;int end = 0;int llen = 0;//int[][] dp = new int[s.length()][s.length()];for (int x = 0; x < s.length(); x++) {dp[x][x] = 1;if (llen == 0) {start = end = x;}if (x < s.length() - 1) {if (Objects.equals(ss[x], ss[x + 1])) {dp[x][x + 1] = 1;start = x;end = x + 1;llen = 2;} else {dp[x][x + 1] = 0;}}}for (int i = 1; i < s.length(); i++) {for (int j = 1; i -  j >= 0 && i + j < s.length(); j++) {if (dp[i][i + 1] == 1) {if (i + 1 + j < s.length() && StringUtils.equals(ss[i - j], ss[i + 1 + j])) {dp[i - j][i + 1 + j] = 1;if (llen < end - start + 1 + 2 * j) {start = i - j;end = i + 1 + j;}}}if (StringUtils.equals(ss[i - j], ss[i + j])) {dp[i - j][i + j] = 1;if (llen < end - start + 1 + 2 * j) {start = i - j;end = i + j;}}}}System.out.println("start: " + start);System.out.println("end  : " + end);return s.substring(start, end + 1);}
}

leetcode No5 最长回文子串相关推荐

  1. [动态规划|字符串] leetcode 5 最长回文子串

    [动态规划|字符串] leetcode 5 最长回文子串 1.题目 题目链接 给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为 1000. 示例1: 输入: "b ...

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

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

  3. 20200118:(leetcode)最长回文子串(中心扩展算法详解及思考)

    最长回文子串(中心扩展算法详解及思考) 题目 中心扩展算法详解 代码实现 题目 给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为 1000. 示例 1: 输入: " ...

  4. 20200117:(leetcode)最长回文子串(暴力法)

    最长回文子串 题目 基本思路 代码实现 题目 给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为 1000. 示例 1: 输入: "babad" 输出: ...

  5. leetcode 5. 最长回文子串 暴力法、中心扩展算法、动态规划,马拉车算法(Manacher Algorithm)

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

  6. leetcode - 5. 最长回文子串

    给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为 1000. 解题思路: 对于一个字符串,回文子串存在两种情况,第一种情况是???a???的回文子串,第二种情况是???aa ...

  7. leetcode题解5-最长回文子串

    问题描述 给你一个字符串 s,找到 s 中最长的回文子串. 示例 1: 输入:s = "babad" 输出:"bab" 解释:"aba" 同 ...

  8. LeetCode 516 最长回文子串

    思路: 动态规划 dp数组:dp[i][j]表示s[i:j]最长回文子串长度 出口: ●i j相同,   dp[i][j]  都为1 ●j=i+1,如果  s[j]=s[i]  dp[i][j]=2, ...

  9. LeetCode 05最长回文子串

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

  10. [LeetCode][M0005]最长回文子串(Java)(马拉车(Manacher)算法)

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

最新文章

  1. linux hdparm 测试磁盘io,hdparm测试硬盘性能
  2. prometheus实战:
  3. 数据结构——二叉树的最长路径问题
  4. linux mysql误删,linux下MySQL安装与删除 (Ubuntu)
  5. Python稳基修炼之计算机等级考试易错细节题3(含答案)
  6. 创业阶段如何找客户_刚成立公司,怎么样找客户?
  7. jquery 常用方法 集锦
  8. 取数工具服务器文件夹,财务软件取数工具
  9. 深入Marlin固件
  10. 访问本机php文件无法解析_浏览器访问.php文件不解析直接下载
  11. 亲密关系(二、月晕现象)
  12. 【论文精读】Single-Perspective Warps in Natural Image Stitching-自然图像拼接中的单透视扭曲
  13. 尼基塔·丹尼诺夫《梦想者》
  14. ZoneAlarm 不错的防火墙软件
  15. 两篇关于区块链的最新综述论文被 IEEE ACCESS 接收
  16. could not initialize proxy - the owning Session was closed解决
  17. Git用户手册--GitHub
  18. 蓝牙Mesh开发五 Ble Mesh友谊FriendShip之TLSR8258低功耗节点
  19. Redis-狂神笔记-菜鸟风闲整理
  20. java随机生成姓名、电话、邮箱、时间

热门文章

  1. 10月最新720全景云系统,可生成小程序+带PC端+安装教程
  2. 2021年西式面点师(中级)考试题库及西式面点师(中级)考试试题
  3. rockchip eDP 配置
  4. 鸿蒙申请银行卡格式错误,办建设银行卡问题
  5. 【前端库】moment.js 时间库
  6. python excel 微信_Python读写Excel文件第三方库汇总,你想要的都在这儿!,微信文件第三方打开...
  7. 【原创纯手打】VUE项目写小米商城官网(附源码)
  8. 基于SPSS的医疗医保费用数据分析预测(C#)
  9. Unity实战篇:实现LOL英雄的移动方式。
  10. python 常用股票走势图绘制