leetcode-回文字符串(马拉车算法模板)
马拉车算法
由于看了一个巨巨的博客深受启发。所以不再赘述。
巨巨的博客
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-回文字符串(马拉车算法模板)相关推荐
- 最长回文字符串——马拉车(Manacher)算法
最长回文字符串--马拉车(Manacher)算法 说来惭愧,都快要毕业了才写第一篇博客... 回文串 回文串呢,就是在一个字符串中,左半部分和右半部分是镜像对称的字符串,比如abcba,就是一个已c为 ...
- 最长回文串 马拉车算法 C++
最长回文串 LeetCode 5.最长回文串 给你一个字符串 s,找到 s 中最长的回文子串. 示例 1: 输入:s = "babad" 输出:"bab" 解释 ...
- 最长回文子串(马拉车算法)
给出一个字符串:cabadabae 我们不难看出其回文子串:aba,abadaba 这边简单介绍两种做法: 1.暴力:找出所有字串,然后依次判断是否为回文串,最后找出最长的回文子串 2.中心扩展:遍历 ...
- 最长回文子串manacher算法模板
#1032 : 最长回文子串 时间限制:1000ms 单点时限:1000ms 内存限制:64MB 描述 小Hi和小Ho是一对好朋友,出生在信息化社会的他们对编程产生了莫大的兴趣,他们约定好互相帮助,在 ...
- JAVA算法:回文字符串相关问题详解(回文字符串总结)
JAVA算法:回文字符串相关问题详解(回文字符串总结) Q1. 编写一个工具方法判断给定的字符串是否为回文字符串 例如:给定一个字符串"aabbaa",判断该字符串是否为回文字符串 ...
- Leetcode算法题(C语言)17--验证回文字符串
题目:验证回文字符串 给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写. 说明:本题中,我们将空字符串定义为有效的回文串. 示例 1: 输入: "A man, ...
- 回文字符串—回文子串—Manacher算法
leetcode地址:5. 最长回文子串 解答参考:动态规划.中心扩散.Manacher 算法 问题描述: 给你一个字符串 s,找到 s 中最长的回文子串.比如给定字符串s = "babad ...
- leetCode第五题-求字符串最长回文字符串
原题链接: 最长回文字符串 给你一个字符串 s,找到 s 中最长的回文子串. 示例 1: 输入:s = "babad" 输出:"bab" 解释:"ab ...
- LeetCode 680. 验证回文字符串 Ⅱ
1. 题目 给定一个非空字符串 s,最多删除一个字符.判断是否能成为回文字符串. 示例 1: 输入: "aba" 输出: True示例 2: 输入: "abca" ...
最新文章
- 计算机网络·CSMA/CD协议有关计算
- 13.小结Action
- Spring RestTemplate中几种常见的请求方式
- vue.js初识(一)
- Windows2003ServerEnterprise+Oracle11g+VMWorkstation7.1:在虚拟机下Windows系统
- 【HTML5游戏开发小技巧】RPG情景对话中,令文本逐字输出
- String通过“+”号拼接字符串的底层实现
- 理解 Delphi 的类(三) - 初识类的属性
- Java——数据结构之顺序表
- JAVA回调函数简单讲解 CallBack
- PHP调用MYSQL存储过程实例
- matlab程序的m语言,M语言GMSK程序求教
- 微信大改版,时隔4年再次华丽转身。
- windows开机密码破解-hydra(字典)
- bootmgr快速修复win7_「科普」UEFI+GPT、Legacy+MBR引导模式介绍 引导修复
- 简要了解ios机型,推出年份,型号,容量,显示屏大小以及iOS系统
- 支付宝小程序JS省市区三级联动
- 学 习 中 的 思 考
- 红色警戒2:罗曼诺夫的复仇(openRA) Linux安装指南
- 如何快速批量修改文件名