LeetCode5. 最长回文子串

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

示例 1:

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

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

思路

最强思路Manacher 算法:下次刷的时候看。

普通思路如下:

如果是1个字符,是回文

如果是2个字符且相同,是回文

如果s[start]==s[end] && s[start+1:end-1]是回文, 是回文

if(start==end//一个字符 || (start+1==end && s[start]==s[end])//两个字符相同 || (s[start]==s[end] && judge(s, start+1, end-1, max_size))//start和end同,且内部是回文串
)
return true;

完整代码

class Solution {
public:string longestPalindrome(string s) {if(s.length()==0) return "";fill(dp,dp+1005*1005,0);int max_size=0;tmp.clear();//清理之前存放过的回文串 judge(s, 0, s.length()-1,max_size);//得到所有回文串 return tmp.back();}
private:vector<string> tmp;//记录回文串 short dp[1005*1005];//记录有无重复计算 bool judge(string &s, int start, int end, int &max_size){if(dp[start*s.length()+end]==2) return true;if(dp[start*s.length()+end]==1) return false;if(start==end//一个字符 || (start+1==end && s[start]==s[end])//两个字符相同 || (s[start]==s[end] && judge(s, start+1, end-1, max_size))//start和end同,且内部是回文串 ){dp[start*s.length()+end]=2;//记录计算过的值 string t(s, start, end-start+1);//切割字符串 if(t.size()>max_size){tmp.push_back(t);//存放回文 max_size=t.size();}return true;} if(start+1<=end)judge(s, start+1, end, max_size); if(end-1>=start)judge(s, start, end-1, max_size); dp[start*s.length()+end]=1;return false;}
};

LeetCode5. 最长回文子串相关推荐

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

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

  2. leetcode5:最长回文子串

      这个题目主要是运用manacher算法,又称为马拉车算法,下面对算法进行介绍. manacher算法   首先,定义一些变量,假设当前访问的是第ii个位置: 1.p[i]:1.p[i]:表示以第i ...

  3. LeetCode--5.最长回文子串(滑动窗口)

    最长回文子串(C) 1. 题目描述 2. 题目分析 3. C语言实现 1. 题目描述 难度:中等 2. 题目分析 根据题目,需要注意的有以下几点: 回文子串 回文子串就是正着读和反着读是一样的,比如a ...

  4. python最长回文子串leetcode_Python版LeetCode5. 最长回文子串

    本文转载自[微信公众号:机器学习算法与Python精研,ID:AITop100]经微信公众号授权转载,如需转载与原文作者联系 题目: 给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的 ...

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

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

  6. Leetcode--5. 最长回文子串(java)

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

  7. 马拉车java_leetcode-5 最长回文子串-画蛇添足的马拉车算法

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

  8. 怎么判断一个字符串的最长回文子串是否在头尾_最长回文字串/子序列问题(leetcode5,9,519)

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

  9. LeetCode5-最长回文子串原理及Python实现

    LeetCode5(medium)-最长回文子串 题目 给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为 1000. 思路 中心扩展法 遍历字符串,依次把每个字符作为中心. ...

最新文章

  1. Atitit 提升效率 界面gui方面的前后端分离与cbb体系建设 规范与推荐标准
  2. adb install 和adb uninstall
  3. 无废话XML--XML约束(DTD)
  4. 如何掌握Java内存(并保存程序)
  5. android如何阻塞主线程,Android-Android如何避免阻塞主线程
  6. 使用Express开发小说API接口服务1.0(二)
  7. 一个html文件创造多个页面,使页眉和页脚文件包含在多个html页面中。
  8. .NET Core 中读取appsettings.json配置文件的方法
  9. 【OpenCV学习笔记】【错误处理】计算机缺失MSVCP120D.dll
  10. FTP文件同步(java版)
  11. 我的时时在线电脑(千脑)
  12. Python中更新pip版本的那些事
  13. 【蓝桥杯选拔赛真题30】Scratch小猫奔跑 少儿编程scratch蓝桥杯选拔赛真题讲解
  14. 新浪微博视频下载教程
  15. 关于EFS加密原理及破解浅谈
  16. nihao, woshi mr jhon
  17. 关于买房提前还款问题
  18. RelativeLayout(相对布局)
  19. 【LeetCode】40. 组合总和 II (JavaScript)
  20. 元素地球化学类毕业论文文献有哪些?

热门文章

  1. Netty工作笔记0074---handler链调用机制实例1
  2. STM32工作笔记0061---通用定时器基本原理
  3. JAVA面试要点008---HashMap、Hashtable、ConcurrentHashMap的原理与区别_ConcurrentHashMap原理
  4. security工作笔记003---SpringSecurity框架启动报错.bcrypt.BCryptPasswordEncoder‘ that could not be found.
  5. JSP自定义标签rtexprvalue属性 1
  6. vc中把数据库记录表导入Excel
  7. linux 按照特定字符换行_在Linus Torvalds建议之后内核淘汰80个字符长度限制
  8. ucc编译器(入门)
  9. java es sql groupby_使用 SQL 查询 ElasticSearch EsParser
  10. pyspider all 只启动了_我是如何让微博绿洲的启动速度提升30%的(二)