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.最长回文子串相关推荐

  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. taglist go语言支持
  2. Android Scroller用法
  3. hdu 1251 统计难题(字典树)
  4. SqlServer清空数据表数据
  5. modbus-rtu qt4-serialport3--------micro2440 as device
  6. Java LocalDate类| lengthOfYear()方法和示例
  7. 华为机试——字符个数统计
  8. ExtJS表单提交与加载全攻略
  9. Matlab中图例注释函数legend详解
  10. 单点登录的原理与简单实现
  11. android 富文本编辑器_富文本编辑器,还是Tinymce好一点?Angular/Vue集成最新版
  12. android 获取手机的MAC地址
  13. 我的第一篇博客-Hello World
  14. vue项目导入excel数据
  15. mysql如何上传音频文件_如何上传本地音乐获取MP3外链(欢迎分享和转载)
  16. 用Java写小学生算术题
  17. 计算机硬件技术基础 徐林,水平定向钻机虚拟现实实训系统硬件研发.ppt
  18. (转自)何新:谈“玄”(一)
  19. 交通系统速度预测综述:从车辆到交通【公共交通数据集】【开源模型整理】
  20. NLP深入学习——过滤停用词(Filtering stop words)

热门文章

  1. android之tab分页标签的实现方法,Android应用中使用ViewPager和ViewPager指示器来制作Tab标签...
  2. Mybatis源码解析-sql执行
  3. android 将SQLite数据库的表格导出为csv格式,并解析csv文件
  4. 三十三、深入Python中的itertools模块
  5. 节能原理 复习(能量平衡+热电联产+联合循环)
  6. EMNLP 2021 | PairSupCon:基于实例对比学习的句子表示方法
  7. InfluxData【环境搭建 03】时序数据库 InfluxDB 离线安装配置使用(下载+安装+端口绑定+管理员用户创建+开启密码认证+开机自启配置)完整流程实例分享
  8. Eclipse自动生成返回值对象与补全与加注释
  9. nginx php7 fastcgi,Windows下搭建PHP7+FastCGI+Nginx环境
  10. springboot不能加载https的证书文件(二)