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

示例 1:

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

示例 2:

输入: "cbbd"
输出: "bb"

dp[i][j]表示s[i]到s[j]所表示的子串是否是回文串,是则为1,不是则为0.根据s[i]是否等于s[j],把转移情况分为:

(1)若s[i]==s[j] 若s[i+1][j-1]要么是回文子串,那么s[i]至s[j]是回文子串,dp[i][j]=dp[i+1][j-1],否则,dp[i][j] = 0。

(2)若s[i]==s[j],则s[i]至s[j]不是回文子串,dp[i][j] = 0

class Solution {const int maxn = 1000+10;
public:string longestPalindrome(string s) {int dp[maxn][maxn];int len = s.length();int start = 0, ans = 1;memset(dp,0,sizeof(dp));for(int i = 0; i < len; i++){dp[i][i] = 1;  //长度为1的子串if(i<len-1){if(s[i] == s[i+1])  //长度为2的子串{dp[i][i+1] = 1;start = i;ans = 2;}}}for(int L = 3; L <= len; L++) //从长度为3的子串开始枚举{for(int i = 0; i + L - 1 < len; i++)  //起点{int j = i + L - 1;  //右端点if(s[i] == s[j] && dp[i+1][j-1] == 1) //状态转移:{dp[i][j] = 1;start = i;ans = L;}}}return s.substr(start,ans);}};

leetcode--5. 最长回文子串相关推荐

  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. 2022-2028年中国铁路信息化建设投资分析及前景预测报告
  2. php执行URL解析
  3. “一线城市,年薪30万+,我却裸辞回老家”一个前程序员的 10 年职业思考
  4. jQuery Tags Input Plugin(添加/删除标签插件)
  5. mysql模糊查询的优化方法--亲自实践
  6. 1.7-bzip2和bunzip2
  7. Android开机logo修改方法
  8. 图像处理(二)Seam Carving算法-Siggraph 2007
  9. B - Beautiful Paintings
  10. go语言中文件的操作:
  11. 进程与线程的区别与联系(经典面试题)
  12. 两款WiFi无线网络扫描工具软件:WirelessMon、Xirrus WiFi Inspector
  13. 淘宝数据分析必须知道的15个核心问题
  14. html中加减号,如何添加加+和减号 - 按钮,在产品列表网页(list.phtml)
  15. 关于-O0、O1、O2、O3优化
  16. 瑞思拜 我儿豁 SpringMVC基础 兄弟们冲冲冲
  17. 2021年危险化学品生产单位安全生产管理人员考试题库及危险化学品生产单位安全生产管理人员最新解析
  18. 偏振光及其在摄影上的应用
  19. Python学习0——基础知识1
  20. 每日词根——viv(生命)

热门文章

  1. 【玩转cocos2d-x之三十一】弱联网与服务器的通讯
  2. 浅谈 FTP、FTPS 与 SFTP
  3. 深刻好文|关于资产与负债的思考(国庆活动开启)
  4. 【内含福利】七牛云线下专场活动免费报名
  5. Android到底何去何从?来自腾讯、阿里、京东、网易、美图等大咖为你揭晓
  6. 征稿:2018-2019音视频技术回顾与展望
  7. linux编译libevent
  8. MySQL Sharding DB (基于Fabric)
  9. linux centos 编译luabind-0.9.1 动态库 静态库
  10. leetcode 424. Longest Repeating Character Replacement | 424. 替换后的最长重复字符(Java)