马拉车算法

由于看了一个巨巨的博客深受启发。所以不再赘述。

巨巨的博客

leetcode-最长回文字符串:

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

示例 1:

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

输入: “cbbd”
输出: “bb”

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/longest-palindromic-substring
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
原题链接

解题思想:

看懂马拉车即可

AC代码:

class Solution {
public:
void init(string s,string &des)
{int len=s.length();for(int i=0;i<len;i++){des+='#';des+=s[i];}   des+="#";
}
string sol(string s,string pre)
{int len=s.length();int id;int mx=0;int p[10000]={0};int maxlength=-1;int index=-1;for(int i=1;i<len-1;i++){if(i<mx){p[i]=min(p[2*id-i],mx-i);}else{p[i]=1;}while(s[i+p[i]]==s[i-p[i]]){p[i]++;}if(p[i]+i>mx){mx=p[i]+i;id=i;}if(p[i]-1>maxlength){maxlength=p[i]-1;index=i;}}string ans="";int start=(index-maxlength-1)/2;//这里和巨巨的模板代码不同,多减了一个1但是和巨巨博客中相同for(int i=start;i<start+maxlength;i++){ans+=pre[i];}return ans;}string longestPalindrome(string s) {if(s.length()<2){return s;}string des="$";init(s,des);return sol(des,s);    }
};

总结:

主要是为了留一下巨巨的博客(Orz)

leetcode-回文字符串(马拉车算法模板)相关推荐

  1. 最长回文字符串——马拉车(Manacher)算法

    最长回文字符串--马拉车(Manacher)算法 说来惭愧,都快要毕业了才写第一篇博客... 回文串 回文串呢,就是在一个字符串中,左半部分和右半部分是镜像对称的字符串,比如abcba,就是一个已c为 ...

  2. 最长回文串 马拉车算法 C++

    最长回文串 LeetCode 5.最长回文串 给你一个字符串 s,找到 s 中最长的回文子串. 示例 1: 输入:s = "babad" 输出:"bab" 解释 ...

  3. 最长回文子串(马拉车算法)

    给出一个字符串:cabadabae 我们不难看出其回文子串:aba,abadaba 这边简单介绍两种做法: 1.暴力:找出所有字串,然后依次判断是否为回文串,最后找出最长的回文子串 2.中心扩展:遍历 ...

  4. 最长回文子串manacher算法模板

    #1032 : 最长回文子串 时间限制:1000ms 单点时限:1000ms 内存限制:64MB 描述 小Hi和小Ho是一对好朋友,出生在信息化社会的他们对编程产生了莫大的兴趣,他们约定好互相帮助,在 ...

  5. JAVA算法:回文字符串相关问题详解(回文字符串总结)

    JAVA算法:回文字符串相关问题详解(回文字符串总结) Q1. 编写一个工具方法判断给定的字符串是否为回文字符串 例如:给定一个字符串"aabbaa",判断该字符串是否为回文字符串 ...

  6. Leetcode算法题(C语言)17--验证回文字符串

    题目:验证回文字符串 给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写. 说明:本题中,我们将空字符串定义为有效的回文串. 示例 1: 输入: "A man, ...

  7. 回文字符串—回文子串—Manacher算法

    leetcode地址:5. 最长回文子串 解答参考:动态规划.中心扩散.Manacher 算法 问题描述: 给你一个字符串 s,找到 s 中最长的回文子串.比如给定字符串s = "babad ...

  8. leetCode第五题-求字符串最长回文字符串

    原题链接: 最长回文字符串 给你一个字符串 s,找到 s 中最长的回文子串. 示例 1: 输入:s = "babad" 输出:"bab" 解释:"ab ...

  9. LeetCode 680. 验证回文字符串 Ⅱ

    1. 题目 给定一个非空字符串 s,最多删除一个字符.判断是否能成为回文字符串. 示例 1: 输入: "aba" 输出: True示例 2: 输入: "abca" ...

最新文章

  1. 计算机网络·CSMA/CD协议有关计算
  2. 13.小结Action
  3. Spring RestTemplate中几种常见的请求方式
  4. vue.js初识(一)
  5. Windows2003ServerEnterprise+Oracle11g+VMWorkstation7.1:在虚拟机下Windows系统
  6. 【HTML5游戏开发小技巧】RPG情景对话中,令文本逐字输出
  7. String通过“+”号拼接字符串的底层实现
  8. 理解 Delphi 的类(三) - 初识类的属性
  9. Java——数据结构之顺序表
  10. JAVA回调函数简单讲解 CallBack
  11. PHP调用MYSQL存储过程实例
  12. matlab程序的m语言,M语言GMSK程序求教
  13. 微信大改版,时隔4年再次华丽转身。
  14. windows开机密码破解-hydra(字典)
  15. bootmgr快速修复win7_「科普」UEFI+GPT、Legacy+MBR引导模式介绍 引导修复
  16. 简要了解ios机型,推出年份,型号,容量,显示屏大小以及iOS系统
  17. 支付宝小程序JS省市区三级联动
  18. 学 习 中 的 思 考
  19. 红色警戒2:罗曼诺夫的复仇(openRA) Linux安装指南
  20. 如何快速批量修改文件名

热门文章

  1. 解决Win10安装DirectX报错:不能信任一个安装所需的压缩文件,请检查加密服务是否启用并且Cabinet文件证书是否有效
  2. C语言求三个数的中间值(三目运算符)
  3. Vulkan spec 中文版 翻译基础版本切换
  4. c语言ascii码字符集共有多少个编码,标准ascii码字符集共有多少个编码
  5. 第0课 课前必读(未完成)
  6. 一、Hbase介绍、数据模型、体系结构
  7. 如何用canvas实现五子棋
  8. 计算机数据表示和运算
  9. Docker与Dockerfile极简入门文档
  10. python os 模块