暴力法



动态规划解法


class Solution {public String longestPalindrome(String s) {if (s == null) return null;char[] cs = s.toCharArray();if (cs.length <= 1) return s;// 最长回文子串的长度(至少是1)int maxLen = 1;// 最长回文子串的开始索引int begin = 0;boolean[][] dp = new boolean[cs.length][cs.length];// 从下到上(i由大到小)for (int i = cs.length - 1; i >= 0; i--) {// 从左到右(j由小到大)for (int j = i; j < cs.length; j++) {// cs[i, j]的长度int len = j - i + 1;dp[i][j] = (cs[i] == cs[j]) && (len <= 2 || dp[i + 1][j - 1]);if (dp[i][j] && len > maxLen) { // 说明cs[i, j]是回文子串maxLen = len;begin = i;}}}return new String(cs, begin, maxLen);}
}



扩展中心法

class Solution {public String longestPalindrome(String s) {if (s == null) return null;char[] cs = s.toCharArray();if (cs.length <= 1) return s;// 最长回文子串的长度(至少是1)int maxLen = 1;// 最长回文子串的开始索引int begin = 0;//扫描的范围  [1,cs.length - 2]  从右往左扫 cs.length - 2  --->> 1for (int i = cs.length - 2; i >= 1; i--) {// 以字符为中心向左右扩展int len1 = palindromeLength(cs, i - 1, i + 1);// 以字符右边的间隙为中心向左右扩展int len2 = palindromeLength(cs, i, i + 1);len1 = Math.max(len1, len2);if (len1 > maxLen) {maxLen = len1;begin = i - ((maxLen - 1) >> 1);}}// 以0号字符右边的间隙为中心的最长回文子串长度是2if (cs[0] == cs[1] && maxLen < 2) {// cs[0, 1]就是最长的回文子串begin = 0;maxLen = 2;}return new String(cs, begin, maxLen);}/*** @return 从l开始向左、从r开始向右扫描,获得的最长回文子串的长度*/private int palindromeLength(char[] cs, int l, int r) {while (l >= 0 && r < cs.length && cs[l] == cs[r]) {l--;r++;}return r - l - 1;}
}

5. 最长回文子串——暴力法---动态规划解法---扩展中心法相关推荐

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

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

  2. Leetcode-最长回文子串(包含动态规划以及Manacher算法)

    原文地址: https://www.cnblogs.com/mini-coconut/p/9074315.html 给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为1000 ...

  3. LeetCode 5. Longest Palindromic Substring 最长回文子串 Python 四种解法(Manacher 动态规划)

    Longest Palindromic Substring 最长回文子串 学习笔记 1. Brute method 第一种方法:直接循环求解,o(n2)o(n^2) class Solution:de ...

  4. 题解:最长回文子串(4种解法)

    一.描述 二.题解: 2.1 暴力法(O(N3)O(N^3)O(N3)) 解释: 循环三次.第一次起始点循环:第二次终止点循环(从最右边开始到起始点为止):第三次起始点开始终止点结束,当两个值不相等时 ...

  5. 【字符串】最长回文子串 ( 动态规划算法 ) ★

    文章目录 一.回文串.子串.子序列 二.最长回文子串 1.动态规划算法 2.动态规划算法代码示例 一.回文串.子串.子序列 " 回文串 ( Palindrome ) " 是 正反都 ...

  6. 最大子串和 python_5. 最长回文子串(Python)

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

  7. 数据结构-----最长回文子串

    题目描述 给定一个字符串,找出该字符串的最长回文子串.回文字符串指的就是从左右两边看都一样的字符串,如aba,cddc都是回文字符串.字符串abbacdc存在的回文子串有abba和cdc,因此它的最长 ...

  8. 最长回文子串与最长回文子序列

    文章目录 最长回文子串与最长回文子序列 最长回文子串 题目描述 dp解法 从中心扩展 马拉车算法 最长回文子序列 题目描述 dp 解法 递归思想 最长回文子串与最长回文子序列 最长回文子串 LeetC ...

  9. 统计5个字符串回文个数c语言,第一章 字符串 – 1.5 最长回文子串 - 编程之法:面试和算法心得...

    最长回文子串 题目描述 给定一个字符串,求它的最长回文子串的长度. 分析与解法 最容易想到的办法是枚举所有的子串,分别判断其是否为回文.这个思路初看起来是正确的,但却做了很多无用功,如果一个长的子串包 ...

最新文章

  1. 微软:软件帝王的复兴之路
  2. ANSI C:+++
  3. 手机App都在偷听我说话?窃听疑云全球密布,科技公司连连喊冤
  4. 什么是mysql显错注入_十种MYSQL显错注入原理讲解(三)
  5. Microsoft Access 2002中文版标准培训教程pdf
  6. 韦根读卡电路c语言程序,私人项目开源 — 低成本125K RFID读卡模块(原理图+PCB+代码+调试)...
  7. VIM 插件管理--Vim-plug
  8. SAP重置公司代码资产会计(FI-AA)数据-OABL
  9. 网站邀请码php,简单的PHP邀请码系统
  10. Centos7系统PC安装后在工控机无法运行问题解决
  11. 7-3 分段函数1 (20分)
  12. 广东创建培训促进就业新机制(其二)
  13. pycharm 调试pytorch代码:unable to get repr for <class torch.Tensor>
  14. HTCVIVE硬件环境搭建和软件基础配置
  15. OpenCV + CPP 系列(卅五)图像特征提取(SURF特征检测、SIFT特征检测)
  16. 步进电机28BYJ-48
  17. 毕设常用云平台之机智云如何使用
  18. 外卖和快递行业数据_外卖、快递行业红黑榜公示第一期,快看看有你熟悉的吗?...
  19. angular7中引用ng zorro antd的三种方式
  20. 企业招聘:UX设计师需要满足他们哪些期望?

热门文章

  1. dom4j生成、解析xml
  2. 练手WPF(三)——扫雷小游戏的简易实现(中)
  3. 解题:HEOI 2016 求和
  4. 2016/3/10 PHP (超文本预处理器) 是什么?
  5. UVALive 7138 The Matrix Revolutions(Matrix-Tree + 高斯消元)(2014 Asia Shanghai Regional Contest)...
  6. cdoj841-休生伤杜景死惊开 (逆序数变形)【线段树 树状数组】
  7. 当Android工程中提示你找不到头文件,但你已经设置头文件路径了
  8. Flash与组件:国外收费组件网站
  9. Android内置第三方输入法
  10. Android编译小结(新建android项目)