题目

思路分析

  1. 中心扩向两边的思想,根据回文串的性质,如str = "aba",从b出发,往两边同时遍历并比较字符是否相同即可,令left = i - 1,right = i + 1,那么依次比较str[left] == str[right]是否成立。如成立,继续比较,若不成立,则结束此次迭代,并进行i ++下一次比较。该方法的最大时间复杂度为O(n^2).
  2. 动态规划的思想,该方法由小到大、由短到长进行判断是否是回文串(对于单个字符都默认为回文串,即长度为1,该性质也作为初始化dp数组的条件(dp[i][j]表示下标从ij的子字符串),即dp[i][j]=true)。那么后续的判断都在该基础上进行。如判断dp[i][i + len - 1]回文串true or false,只需判断s[i] == s[i + len - 1]是否成立,若成立,则dp[i][i + len - 1] = dp[i + 1][i + len - 2] ,否则dp[i][i + len - 1] = false 。当然,其中存在一个细节问题,请看代码实现。

题解1

class Solution {public:string longestPalindrome(string s) {int left, right;string max_str = "", cur_str = "";for(int i = 0;i < s.length(); ++i){left = i - 1, right = i + 1;cur_str = s[i];for(int j = right; right < s.length(); ++j){if(s[i] == s[j])cur_str += s[j];else{right = j;break;}}while(left >= 0 && right < s.length()){if(s[left] == s[right])cur_str = s[left] + cur_str + s[right];elsebreak;left --;right ++;}max_str = (max_str.size() < cur_str.size() ? cur_str : max_str);if (s.length() - i < max_str.size() / 2)break;}return max_str;}
};

提交结果

题解2

class Solution {public:string longestPalindrome(string s) {if(s.size() <= 1)return s;// Construct dp [i] [j] to indicate whether the substring of the subscripts i to j of the string is a palindrome stringvector<vector<int>> dp(s.size(), vector<int>(s.size()));int start = 0, end = 0;// A single character is a palindrome stringfor(int i = 0;i < s.size(); ++i) dp[i][i] = true;// Traverse from a minimum length of 2for(int len = 2; len <= s.size(); ++len){for(int i = 0; i < s.size() - len + 1; ++i){// Unequal first and last charactersif(s[i] != s[i + len - 1])dp[i][i + len - 1] = false;else{if (len <= 2)dp[i][i + len - 1] = true;// Determine whether the included string is a palindrome stringelse dp[i][i + len - 1] = dp[i + 1][i + len - 2];}// Update the beginning and end positions of the maximum palindrome stringif (dp[i][i + len - 1] && len >= end - start + 1){start = i;end = i + len - 1;}}}return s.substr(start, end - start + 1);}
};

提交结果

leetcode 5. 最长回文子串(c++)相关推荐

  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. python : unindent dose not math any outer indentation level
  2. dubbo 单元测试_技术分享——一路踩坑构建Dubbo源码
  3. 快速记忆python函数-【速学速记】Python 高阶函数
  4. 【k8s】kuboard获取token命令
  5. 计算机科学 在职双证,计算机专业在职研究生如何获得双证?
  6. Windows UI风格的设计(11)
  7. 使用Spring Boot 2使用OAuth2和不透明令牌进行集中授权
  8. 工业交换机厂家有哪些,国产工业交换机品牌排行榜
  9. 如何对一个变量数据进行正则判定_生存分析数据中的BuckleyJamesMultipleRegression Model...
  10. 做三维模型_这几款倾斜实景三维裸眼3D采集软件你了解吗?
  11. 如何让你的SQL运行得更快(一)
  12. 【回环检测】如何理解loopClosing中的连续性检测
  13. 【图像增强】基于matlab模糊集图像增强【含Matlab源码 394期】
  14. 重新认识下科技核心目录吧!附容易发的期刊名单
  15. Java基础视频教程
  16. 【机器学习】机器学习项目全流程(附带项目实例)
  17. linux 系统管理员l,系统管理员的 SELinux 指南
  18. 健身房人物生活锻炼照片调色艺术LR预设
  19. 关闭windows server服务器的密码过期提示
  20. Twitter 下载遇到的问题

热门文章

  1. 【高并发】- 指标介绍
  2. Swing交通罚单管理系统java车辆违章缴费金额查询交警信息jsp源代码Maven数据库mysql
  3. 送一台高配电脑,吃鸡贼爽!
  4. 绝对良心提供百度网盘的jdk1.8源码下载包含sun包的
  5. Wallpaper Engine开机黑屏、休眠黑屏、不显示壁纸解决方法
  6. Git学习之回退撤销
  7. laragon mysql版本_laragon mysql8 安装
  8. 购买服务器 操作系统选什么区别吗,购买服务器选择什么操作系统
  9. 如何使用prism进行统计分析(Analysis)?
  10. 小程序源码:和平精英吃鸡捏脸数据助手-多玩法安装简单