hihoCoder-1032 - 最长回文子串(Manacher 马拉车)
来源:互联网 发布:网络流行词汇有哪些 编辑:程序博客网 时间:2024/06/05 07:43
1032 : 最长回文子串
时间限制:1000ms
单点时限:1000ms
内存限制:64MB
描述
小Hi和小Ho是一对好朋友,出生在信息化社会的他们对编程产生了莫大的兴趣,他们约定好互相帮助,在编程的学习道路上一同前进。
这一天,他们遇到了一连串的字符串,于是小Hi就向小Ho提出了那个经典的问题:“小Ho,你能不能分别在这些字符串中找到它们每一个的最长回文子串呢?”
小Ho奇怪的问道:“什么叫做最长回文子串呢?”
小Hi回答道:“一个字符串中连续的一段就是这个字符串的子串,而回文串指的是12421这种从前往后读和从后往前读一模一样的字符串,所以最长回文子串的意思就是这个字符串中最长的身为回文串的子串啦~”
小Ho道:“原来如此!那么我该怎么得到这些字符串呢?我又应该怎么告诉你我所计算出的最长回文子串呢?
小Hi笑着说道:“这个很容易啦,你只需要写一个程序,先从标准输入读取一个整数N(N<=30),代表我给你的字符串的个数,然后接下来的就是我要给你的那N个字符串(字符串长度<=10^6)啦。而你要告诉我你的答案的话,只要将你计算出的最长回文子串的长度按照我给你的顺序依次输出到标准输出就可以了!你看这就是一个例子。”
提示一 提示二 提示三 提示四
样例输入
3
abababa
aaaabaa
acacdas
样例输出
7
5
3
求最长回文子串模板存一发
#include<stdio.h>#include<iostream>#include<algorithm>#include<string.h>using namespace std;const int maxn=1000010;char str[maxn*2];char flag[maxn];int RL[maxn];int main(){ int T; scanf("%d",&T); while(T--) { memset(str,'\0',sizeof(str)); memset(flag,'\0',sizeof(flag)); memset(RL,0,sizeof(RL)); scanf("%s",flag); str[0]='@';//代表结尾 str[1]='#'; int len=2; for(int i=0;flag[i]!='\0';i++) { str[len++]=flag[i]; str[len++]='#'; } int pos=1; int max_right=1; int result=1; RL[0]=1; RL[1]=1; for(int i=2;str[i]!='\0';i++) { if(i>max_right) RL[i]=1; else RL[i]=min(max_right-i,RL[pos+pos-i]); while(str[i-RL[i]]==str[i+RL[i]]) RL[i]++; if(RL[i]+i>max_right) { max_right=RL[i]+i; pos=i; } if(RL[i]>result) result=RL[i]; } printf("%d\n",result-1); } return 0;}
0 0
- hihoCoder-1032 - 最长回文子串(Manacher 马拉车)
- hihoCoder 最长回文子串(manacher算法:马拉车)
- Manacher马拉车算法求最长回文子串
- [hihoCoder 1032]最长回文子串[Manacher]
- hihocoder 1032 : 最长回文子串(Manacher)
- hihoCoder #1032 : 最长回文子串(manacher)
- hihocoder-1032 最长回文子串(Manacher)
- 最长回文子串(马拉车)
- 【LeetCode】Longest Palindromic Substring(最长回文子串1)[马拉车Manacher算法]
- hihoCoder#1032 最长回文子串——Manacher算法
- hihoCoder 1032 最长回文子串 (manacher算法)
- hihoCoder#1032 : 最长回文子串(manacher算法)
- hihocoder 1032 最长回文子串 (Manacher算法 详解+模板)
- 【算法】最长回文子串-Manacher算法(hihoCoder 1032)
- hihocoder 1032, 最长回文子串, manacher算法
- Hihocoder #1032 : 最长回文子串 (Manacher算法)
- 1040. Longest Symmetric String (25)【最长回文子串-马拉车(manacher算法)——PAT (Advanced Level) Practise
- 最长回文子串-----“马拉车”算法
- Linux成长之路(六)——简单的文本处理和数据流重定向
- Tensorflow之RNN实践(一)
- Chapter 11 浅析Exchanger类
- ESP32 模块编译
- C++琐碎小知识点记录
- hihoCoder-1032 - 最长回文子串(Manacher 马拉车)
- HDU3790-最短路径问题(最短路+dp)
- Finding Nemo(FPFA没看懂,先存着)
- iOS类别可以扩展类的属性
- 统计学习方法笔记(8)——提升方法之前向分布算法和提升树
- 欢迎使用CSDN-markdown编辑器
- JSP(1)
- dpdk 在VMware 中的安装部署
- DFS——HDU1010(经典的奇偶剪枝)