LeetCode5. 最长回文子串
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. 最长回文子串相关推荐
- leetcode5. 最长回文子串(动态规划)
给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为 1000. 示例 1: 输入: "babad" 输出: "bab" 注意: &qu ...
- leetcode5:最长回文子串
这个题目主要是运用manacher算法,又称为马拉车算法,下面对算法进行介绍. manacher算法 首先,定义一些变量,假设当前访问的是第ii个位置: 1.p[i]:1.p[i]:表示以第i ...
- LeetCode--5.最长回文子串(滑动窗口)
最长回文子串(C) 1. 题目描述 2. 题目分析 3. C语言实现 1. 题目描述 难度:中等 2. 题目分析 根据题目,需要注意的有以下几点: 回文子串 回文子串就是正着读和反着读是一样的,比如a ...
- python最长回文子串leetcode_Python版LeetCode5. 最长回文子串
本文转载自[微信公众号:机器学习算法与Python精研,ID:AITop100]经微信公众号授权转载,如需转载与原文作者联系 题目: 给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的 ...
- leetcode--5. 最长回文子串
给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为 1000. 示例 1: 输入: "babad" 输出: "bab" 注意: &qu ...
- Leetcode--5. 最长回文子串(java)
给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为 1000. 示例 1: 输入: "babad" 输出: "bab" 注意: &qu ...
- 马拉车java_leetcode-5 最长回文子串-画蛇添足的马拉车算法
leetcode-5 最长回文子串 题目 给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为 1000. 示例 1: 输入: "babad" 输出: &q ...
- 怎么判断一个字符串的最长回文子串是否在头尾_最长回文字串/子序列问题(leetcode5,9,519)
leetcode 5 最长回文子串 给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为 1000. 示例 1: 输入: "babad" 输出: " ...
- LeetCode5-最长回文子串原理及Python实现
LeetCode5(medium)-最长回文子串 题目 给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为 1000. 思路 中心扩展法 遍历字符串,依次把每个字符作为中心. ...
最新文章
- Atitit 提升效率 界面gui方面的前后端分离与cbb体系建设 规范与推荐标准
- adb install 和adb uninstall
- 无废话XML--XML约束(DTD)
- 如何掌握Java内存(并保存程序)
- android如何阻塞主线程,Android-Android如何避免阻塞主线程
- 使用Express开发小说API接口服务1.0(二)
- 一个html文件创造多个页面,使页眉和页脚文件包含在多个html页面中。
- .NET Core 中读取appsettings.json配置文件的方法
- 【OpenCV学习笔记】【错误处理】计算机缺失MSVCP120D.dll
- FTP文件同步(java版)
- 我的时时在线电脑(千脑)
- Python中更新pip版本的那些事
- 【蓝桥杯选拔赛真题30】Scratch小猫奔跑 少儿编程scratch蓝桥杯选拔赛真题讲解
- 新浪微博视频下载教程
- 关于EFS加密原理及破解浅谈
- nihao, woshi mr jhon
- 关于买房提前还款问题
- RelativeLayout(相对布局)
- 【LeetCode】40. 组合总和 II (JavaScript)
- 元素地球化学类毕业论文文献有哪些?
热门文章
- Netty工作笔记0074---handler链调用机制实例1
- STM32工作笔记0061---通用定时器基本原理
- JAVA面试要点008---HashMap、Hashtable、ConcurrentHashMap的原理与区别_ConcurrentHashMap原理
- security工作笔记003---SpringSecurity框架启动报错.bcrypt.BCryptPasswordEncoder‘ that could not be found.
- JSP自定义标签rtexprvalue属性 1
- vc中把数据库记录表导入Excel
- linux 按照特定字符换行_在Linus Torvalds建议之后内核淘汰80个字符长度限制
- ucc编译器(入门)
- java es sql groupby_使用 SQL 查询 ElasticSearch EsParser
- pyspider all 只启动了_我是如何让微博绿洲的启动速度提升30%的(二)