【LeetCode】5.最长回文子串
5.最长回文子串
一、问题描述
给你一个字符串
s
,找到s
中最长的回文子串。
二、问题简化
所谓回文字符串,即反过来念的字符串和正着念一样。比如“卿卿我我卿卿”、“一二三二一”、“12321”。
回文一词指的是汉语的一种语法,英文为palindrome。
问题可以拓展到任意类型,并且并不一定返回最长的(何况最长的可能不只一个)。
虽然单个元素也是对称的,但是返回它并没有意义,所以我们只返回长度大于1的回文子串。
三、功能实现
1.遍历所有子串(从长到短,也可以反过来,看问题需求是返回最长还是最短)
2.判断子串是否满足回文要求(这一个功能可以单独作为一个算法)
3.满足要求的加入到返回值
判断子串是否满足回文要求:
//判断子串是否为回文子串
template<typename T>
bool IsPalindrome(const T& vec, int beg, int len)
{if (len <= 1)return true;int last = beg + len - 1;while (beg < last){if (vec[beg] != vec[last])return false;++beg;--last;}return true;
}
遍历所有子串,从长到短(不包含长度为1的):
template<typename T>
vector<T> GetSubPalindrome(const T& vec)
{vector<T> ret;int length = vec.size();for (int len = length; len > 1; --len){for (int beg = 0; beg + len < length; ++beg){if (IsPalindrome(vec, beg, len)){ret.emplace_back(vec.begin() + beg, vec.begin() + beg + len);}}}return ret;
}
四、测试结果
我的代码是最简单的暴力算法,是O(N^3)的时间复杂度,竟然有O(N)复杂度的代码……叫马拉车算法,很神奇。所以我就不贴我的代码了。
【LeetCode】5.最长回文子串相关推荐
- [动态规划|字符串] leetcode 5 最长回文子串
[动态规划|字符串] leetcode 5 最长回文子串 1.题目 题目链接 给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为 1000. 示例1: 输入: "b ...
- LeetCode 5. 最长回文子串(动态规划)
文章目录 1. 题目 2. 解题 2.1 自己写的DP 2.2 优化后的DP 2.3 中心扩展法 1. 题目 给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为 1000. ...
- 20200118:(leetcode)最长回文子串(中心扩展算法详解及思考)
最长回文子串(中心扩展算法详解及思考) 题目 中心扩展算法详解 代码实现 题目 给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为 1000. 示例 1: 输入: " ...
- 20200117:(leetcode)最长回文子串(暴力法)
最长回文子串 题目 基本思路 代码实现 题目 给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为 1000. 示例 1: 输入: "babad" 输出: ...
- leetcode 5. 最长回文子串 暴力法、中心扩展算法、动态规划,马拉车算法(Manacher Algorithm)
给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为 1000.示例 1: 输入: "babad" 输出: "bab" 注意: &quo ...
- leetcode - 5. 最长回文子串
给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为 1000. 解题思路: 对于一个字符串,回文子串存在两种情况,第一种情况是???a???的回文子串,第二种情况是???aa ...
- leetcode题解5-最长回文子串
问题描述 给你一个字符串 s,找到 s 中最长的回文子串. 示例 1: 输入:s = "babad" 输出:"bab" 解释:"aba" 同 ...
- 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, ...
- LeetCode 05最长回文子串
题目描述 描述: 给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为 1000. 示例 1: 输入: "babad" 输出: "bab" ...
- [LeetCode][M0005]最长回文子串(Java)(马拉车(Manacher)算法)
题目描述: 给定一个字符串 s,找到 s 中最长的回文子串.你可以假设 s 的最大长度为 1000. 示例 1: 输入: "babad" 输出: "bab" 注 ...
最新文章
- taglist go语言支持
- Android Scroller用法
- hdu 1251 统计难题(字典树)
- SqlServer清空数据表数据
- modbus-rtu qt4-serialport3--------micro2440 as device
- Java LocalDate类| lengthOfYear()方法和示例
- 华为机试——字符个数统计
- ExtJS表单提交与加载全攻略
- Matlab中图例注释函数legend详解
- 单点登录的原理与简单实现
- android 富文本编辑器_富文本编辑器,还是Tinymce好一点?Angular/Vue集成最新版
- android 获取手机的MAC地址
- 我的第一篇博客-Hello World
- vue项目导入excel数据
- mysql如何上传音频文件_如何上传本地音乐获取MP3外链(欢迎分享和转载)
- 用Java写小学生算术题
- 计算机硬件技术基础 徐林,水平定向钻机虚拟现实实训系统硬件研发.ppt
- (转自)何新:谈“玄”(一)
- 交通系统速度预测综述:从车辆到交通【公共交通数据集】【开源模型整理】
- NLP深入学习——过滤停用词(Filtering stop words)
热门文章
- android之tab分页标签的实现方法,Android应用中使用ViewPager和ViewPager指示器来制作Tab标签...
- Mybatis源码解析-sql执行
- android 将SQLite数据库的表格导出为csv格式,并解析csv文件
- 三十三、深入Python中的itertools模块
- 节能原理 复习(能量平衡+热电联产+联合循环)
- EMNLP 2021 | PairSupCon:基于实例对比学习的句子表示方法
- InfluxData【环境搭建 03】时序数据库 InfluxDB 离线安装配置使用(下载+安装+端口绑定+管理员用户创建+开启密码认证+开机自启配置)完整流程实例分享
- Eclipse自动生成返回值对象与补全与加注释
- nginx php7 fastcgi,Windows下搭建PHP7+FastCGI+Nginx环境
- springboot不能加载https的证书文件(二)