疯子的算法总结(七) 字符串算法之 manacher 算法 O(N)解决回文串
有点像DP的思想,写写就会做。
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e7+5;
char a[maxn];
char s[2*maxn];
int len[maxn*2];
int manachar(char *p)
{
int le=strlen(p);
for(int i=0;i<le;i++)
{
s[i*2+2]=p[i];
s[i*2+1]='+';
//cout<<s[i*2+1]<<s[i*2+2];
}
s[0]='^',s[le*2+1]='+';//选取不可能出现的字符即可。
//预处理字符串成为一个奇数串;
int Max=0,pos=0,ans=0;
le=2*le+1;
for(int i=1;i<=le;i++)
{
if(Max>i)
{
len[i]=min(len[2*pos-i],Max-i);
}
else len[i]=1;
while(s[i-len[i]]==s[i+len[i]])len[i]++;
ans =max(len[i],ans);
if(i+len[i]>Max)
{
Max=len[i]+i;
pos=i;
}
}
return ans-1;
}
int main()
{
int cnt=0;
while(~scanf(" %s",a)){
if(a[0]=='E')break;
printf("Case %d: %d\n",++cnt,manachar(a));
memset(a,0,sizeof(a));
}
return 0;
}
/*
..ii7vJJuJ1juJJYL7r::.
:71XPKK5IU1JjssLYLJYJJUU5SKSX1Li.
.r1KPX2Yv77r7r7r777r7r7r7r7r7r7777sJ25XUJi.
:sPPXY7r7r7r77LrvL7r7r7r7r7r7r7r7r7r7r7777vYUSKJr. .
:7ISKSX5Ur :1bKu7777r7r7777ULr7us7777777r7r7r7r7r77777r7r77v7s2K27. :vI5K5KSILi
rS51v7777vLXg vbqu7777r777777777rrr7r7r777r7r777r777r7r777r7r7r777r77L1qUi .Equvv777v7u2q1i
.5577777v77r7iXSvb577r7r7r7r7777777717rLjr7r77777777777r777r777r7r7r7r7r7777L5SLgv77777r7r7777YIXi
.qs777vu2j1Jrr2XXYrr7r77777r7r7r77v11JUJ1U1r7r7r77777r7r777r7777777r7r77777r7r7rBvr77r7r777r77777vX2
KY777vIi :dP1ri7r777r777777777rvs. 7r .2r7r7777777r7r7777777r777r77777r7r7rvZrr7rrv22UL777r7r77UK
rX77r72. sbrrr7r777r77777r7r7r7ss 7i S7r7r777r77777r77777777777777777r7r77vr7r7u1:::YSJr777777US
qv77775 rEuirr7r7r7777777r7r7r7r7sJvUsJsuuvr7r7r7r7r7r77777777777r7r7r7r777r7r7r7777d .1Ur7r777rq7
Evr777L7rPq7r7r777r77777r7rrrrirvju2IXUII5II1u7v77r7rrr7r777r777r7777777r777r7r777r7r7S. Yur7r7777D
sP7r7riXQYrr77777r7r777r7vuuJjddY77rriiiiiririEI15KuX2UL7rrr7r777r7r77777r77777r77777rv5L. jJ7r7r7rrEi
2b2vrKPirr7r7r7r7r7rLuSIur.:SdY Iv.sL :i7JISIJrrr7r7r7r777r7r7r7777777r777sSJJLIs7r77777LR
.irgIirr777r7rriv1X17:. :qiP ............. 5r.rU . ..:Lg117rr777777777r77777r7r777r77vvL77rrrr7sSd.
iXi7r777r7r7vP5r. UZ.vv ............. S. I ..... u7:YRJIvrr7r7r7r7r7r777777777r7r777r77YY1Ji
vZi7r77777rU57g. ... :gS X............... P: q ..... ib:i:E::IXjr7r7r7r7r7r777r777r777777S2IUg
7gr777777rLbL iv ... vRr .P .............. P. X..... .grr. iP :JP17r7r7r777r777r7r7r7r7r7rrirYb
: :Qr7r777rr5q. .Z .. .qX. jv .............. E K .... Pui. 17 .Jq2r7r7r777r7777777r7r7r7r7rrug
B.i: Q777777rvbL iBr rQ7 P:................b 2 ... UXi. g.... .LPjrr7r777r7r7r7777777r7r7rr1D
iXBvL gY7r7r7r1d: jPS :bK...i. E............... vU .:d::. sKi. v2 .... .uKYr7r777r7r7r777r777r777772b
i7di:s: Yqr77r7rKX. .P1:v :Pr . .K .............. E:. :S...Sgr. . D....... :IXr7r77777r777r77777r7r77rXI
.. r. g7r7r7rEs :Dv :::7 .S ............. iX .L 2q:. iK ....7: rPYrr777r77777r7r7r777r7rrd7
vrSM. U2r7r7rE7 iZ: rri . :j ............. P: r:.K1 P:... J:.. .S5rr77777r777r777r777r7r7D.
E1 Dr7r7rP7 i5 u. . :Y P:...........iK 7rIi .E .. 1:... Lq7r7r7r7r7777777r7r7r7rJb
.iv7 jU7r7rI2 i1 .. . :rr77 ......... D .Y. . 57 . X...... rPvr7r7777777r7r7r7r7r7rP7
b777rLqi :j . .Iv X ........ 17 . .Z ..q....... :qLr77777r7r7r777r7r7r7rM
7Sr7rrK7:.L . . g. E:....... iX . . . . . Pr .d ....... :Pvr7r77777r777r777r77712
7 Zr7r7jL::7. P rS ......:P . . :E :q ........ :P7r7777777r7r7r7r7r77rZ.
:B7:7. vX7r7rP.rr. : E:.....:I . . . . q.iJ ......... iP7r7r7r7r7r777777777r1I
.Qq:r7 Evr7rLI J. .r7. :P ...rL . . . vrr:........... L5rr77777r7r77777r7r7rD
XYir :Er7rrJS.. vBBBBB. . . Jr..7i . . :PL............. qY7r777r7r7777777r77711
.:: .7 1I7r7rXP ....... vBBQKi . . . Lir. :BBBgv . :X: ............ .Er77777r777r7r7777777E
:12 USr7rJ2 ......... : :BBBBBg :I .............. vUr777r7r777r77777r7rPi
g: :grrLP. .::::.:.:... .: . .i7v. ........ . :1 .............. :gir777r777r77777r7r7LX
K7v. Purg: :ii:::r::::.... . . . . ......:........ :s .............. vB7rr777r7r777r777r7r7d
DPJ ii:i::r::::::.... . . . . . . . . . . ......:::::.:i:.:.... r7............... EQS:7r7r7r77777777777rP:
.B.i::r::r.:ri.:.:.. . . . . . . . .....:r::::::ri.:::.... si ............. .QPEir7r7777777r7r777r7UY
.U ..::ir.:r:.:.:.... . . . . .:. ....::r::r:.:ri.i::::::.. X:.............. rBIM7rr777r7r7r7r7r7777LX
2i ..::i.:::::i7vi.. :ii. ::. ....:ri..ii.:ri.:r:::::.:. P............... bESDui777r7r7r7r7r7r7777d
d. ...:.:::::.i7r.. :i: i7 .. ri ...ii.::7.:ri.:r:.:::::. .P ............. .QKIg1ir777r7r777r77777r7P.
.:iii. b ........... . :. .r i7iu:.7:.ii.ir ......::i::ri.:ii.:::::.. 7U ............. 7BISD2i77777r7r7r7r777r7rb.
:uqKPXXSPqI: d . ....... . . :i. :: ::. .K ......:.:::::::::::::... u7 ............. ZdS2Rvr777777r7r777777777b.
uZIsJLsvYLs1ZK. 2: .r . ....:.:.:.:::::..... P:............. :BXIPEir7r77777777777r777rE
:QLvYvLvLvLvsLMv :5 . . . i. . ............... P.............. UR55gsi777777777r7r7r777rLK
LPsvvYvLvLvYvI:. Z. . . ru . . . . i. ... . . :K ............ BXSPbirr777r777777777r7r72L
2uJJvvYvLvYvLU:.: g . . .: . i. Yv ............ sQSqgrrr7r7r7r7r777r7r7r7rZ.
1MsUjYvYvYvvrv2j. .Z. . .i .:. :rY7r. X:............ .QqKg7rr7r7r777r777r77777r12
QBPvvLvLvvYIvv12s. Pi . . . . . .. sPPqK5SXS25SM2 . P ............ 2BdZ7ir7r7r777r77777r7r777Z
:P7vvLvL7UgD17YKP. YU. . . . gPJvLvsLLvvsL7Qi . . 7J............ :Bb1iir7r7r7r7r7777777r7r7Pr
gLvYvYvv7EEdvvLIZ .YX. . . KSv7vvv7LLL7YI712 K:............ M1rirr7r777r7r777r7r7r7rrU5
gKJLY7vrJDZPJ7Yuq qLuv: .:52v71ZZL7vY7rLQquI .S ........... K2ir7r7r777r777r777r77777JE
jKSLsr7rsJY7LvIs 7:.ivssri.. .IXXJLv7qQgX7v77vEEZ57 .5. .......... 7drr7r7r777r7r777r7777777YZ
rKIZPqu77YvYYd U . ::igKSX21YL7r:.. :MuYLYvY7LUKJvvvUgEPS1 .i72qgQBr uR ....... :g7r777777777r777r77777r7sZ
2QgDd57LvYvvZi r7..r .57777LuuXPRQBQBQBPj1I5QvYvL7Lvv77r7vL7jussPbEBBBBQRZR5 jEb. ..... .dYr7r777r7r7r777r777r777jE
.vKSvsLYLL7b. 7::i 2771XXSX2UYLvYYJSv7Krq2777rYvLvLvLvLvL77ruj1UUJjYY77L:uji1r ..... 52r7r777r777r7r7r7r7r7r7IP
YPKPXSUqB. iv. ES5r. ..ivuuuYIPJUjSJ7ssURU7LvLvLvYvL72JiiriiiriirjYvr7v2 .... vPr777r7777777r7r777r7rrUv
...iYrsr : jq: ..:::rsJd57PMgEYvvv7vvLvL7vgvi7r7r7r7iX1rr7r7P.... iZr7r77777r77777r777r7irE:
.vi::.. .ii. PYLLJ77v7r77v7Lv2DdSXLrr7r777vrr7r7rbi . .E7777r777r777r7r7r7rriLPBi
i v ..::i. . iX7v7v7vLSbgqJSbS. iqdUrrr7r7r7r77r2s Pv7r777r777777777r7rr7XbPDP
.RbQQi . r. .ZUYv7vvDQggRJi . :KEurr7r7r777rJu 5Jrr7r7r777r77777777rrdPX5PB
jRPQP .:::.. :rYDU .:sJPP2u25PXU. r: iSPvi7r7r7r772 Yjrr77777r77777r77777isbKI5SB:
.:. .PuLd .: sRqJi. s. :rP5i7r777rrJLJ77777r777777777r777r7rbqXISgX
ILrq7 . : ..::iJ i ::.2Pr7r777rLsr77r7r7r7777777r7r7r7rr7PqXIqB
.Ss77Z 27:....i .. :r. r:.Ydr7r777r7r777r7r77777r7r777r777rirPqKSRX
iKLr7jI 7PPbEBBi .:i::. :7: :r:.vdr7r7r7r777r7r7r7r7r77777r7r777rrrXPKXB.
1S777ib: LB1JYJR1 ..:irii:7i .ri:.jKi7r7r7r7777777r7r77777r777r7r7rri2PPZQ
P17r7iYM .5PSqKr ..: ii::.XUr7r7r7r7r777r7r777r7r77777r777rriYqPB7
.ZL7rriJB1 :r::.:d7r7r77777r7r7r777r777r777r7r7r777irKMQ
gv7rriIZB :r:::.7qrr7r7r7r7r7r77777r777r7r77777r777irXBi
dJ7rrrKbBs . .r::::.Ks7r777r777r77777r7777777r7777777r7irMg
rErrrrPPZS .i .i::::.:bi7r777r777r7777777r77777r7r777r7r7iuB
EsrriqqKg: :vi r:i:::.Ijr7r7r7r7r7r7r777r7r7r777r7r7r777rrrB.
Dr7iudPdBBv. :7Kj. .r:::::.rPrr777777777r777777777r7r7r7r7r7r7rrR:
::vPrr7bgQD7iivvvi:. :rISs. .r::::::.Kv7r7r7r7r777r7r777r777777777r7r7r7rE:
.:rvsv7rqrruQ2: ... ..rjX5Ji .i::i:::.v5r7777777777777r777r77777r7r7r777rrPi
.ivYL7rrrii27i1: ...:i:. :i::::::::Krr7r7777777r7r77777r7777777r777r7iKS:.
:vYvrrrririiiYZZESDQqi r:::i::::.Sv7r7r77777r7777777r7r7r777777777riquiYvi
:vYrririririrYji.:vPXUZBB. .ri:::::::.vjr7r777r777r7r77777r7r7r777r77777rMrii7vs:
7L7rrirrL7rrjv: XKUSQBr :r:::::::: vJrr7r7r77777r7r7r77777r7r7r7r777iub:irirrYv
7Lririr7 rjr .:r7rdRd5SKBS. r::::::...vQvr7777777r77777r7777777r7r777r7rrgr:ririrrLv
s7iririru .iLJuL7ii:LqDPKKgQ5. iii:::..:vbQdi7r77777r77777r777r777r7r7r7r7ivEL:iiririrru
7vrrririvs.rsYvrriririi::7XdDPdgBPr :r::..:rSZgZDrrr7r777r7r77777r7777777r7r7rr7Sq7:iiriririvv
Yv7rriri7Y7iiiririririii::iLKEgDQBBbji:. .isqK7 .i:..iUbgdPPb7ir7r7r7r7r777777777r7r7r7rr7u5KYi:iiririrrLY.
rYvrririiiriririririririi:::i7uSbDQBBBBBBMRBBRQQBBQBB2 :.:JqgdPKdPUirr7777777r777r7r7r7rrrrrvsI5Ssr::iiirirrr7Jr
iYv7rriririririririririiii::.::ii7L1IqKBBU iS2PBBI. :vSgZbXPPb27irr7r777r7r7rrrrr7rvvYJ22S217r:::iirirrr7Lvr.
:rYLvrrrririririririririririiiiii.:rj7 .PDEbgQBQgjr. .2ggDKPPdXU7ii7r7rrrrrrr7vYJUUI25UUJs7rii::iiirrrr77Yv7:
.i7LY77rririririririririri7: rjLi .rvJv7:::iir71KQBBBRXY:..IQQdbPP517riiirr7r7vsJI2522JY77rii::::i:iirirrrrvLY7i.
.irvvYv7rrrririririririU . :7Yjvririiii:i:::::r71qRQBBBQEXIsvri:irvvjjI2IU1YY7rii:::i:iiiiririrr77vvYv7i:
.:ivvYvY7vrrrrrriivY .isJsrriririririiiriiii:::::irvJ1YsvLvJJ1UUjjv7rrii:i:i:iiririrrrr77vvYvL7r:.
..:r77LvYvLv7JIjYrrrrrririrrriririririririi:i::::iirrrriiii:iiiirirrrr7r77vvLLLvv7ri:..
...iirr77YvYLYvLvL7v7v7vr7777777r7r7r7r7r7rrrrr7r77v7LvYvsLYvv77ri::..
....::::iirrrr7r777777v77777777rrrriiii::.....
*/
疯子的算法总结(七) 字符串算法之 manacher 算法 O(N)解决回文串的更多相关文章
- 学习manacher(最长公共回文串算法)
给定一个字符串求出其中最长个公共回文串. 举列子: abab -->回文串长度为2 以前的算法诸如: 扩展kmp求法过于麻烦,看到有一篇博文(http://leetcode.com/2011 ...
- 字符串(马拉车算法,后缀数组,稀疏表):BZOJ 3676 [Apio2014]回文串
Description 考虑一个只包含小写拉丁字母的字符串s.我们定义s的一个子串t的“出 现值”为t在s中的出现次数乘以t的长度.请你求出s的所有回文子串中的最 大出现值. Input 输入只有一行 ...
- 算法 -- 四种方法获取的最长“回文串”,并对时间复杂进行分析对比&PHP
https://blog.csdn.net/hongyuancao/article/details/82962382 “回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就 ...
- Manacher回文串算法学习记录
FROM: http://hi.baidu.com/chenwenwen0210/item/482c84396476f0e02f8ec230 #include<stdio.h> #inc ...
- 算法进阶面试题01——KMP算法详解、输出含两次原子串的最短串、判断T1是否包含T2子树、Manacher算法详解、使字符串成为最短回文串
1.KMP算法详解与应用 子序列:可以连续可以不连续. 子数组/串:要连续 暴力方法:逐个位置比对. KMP:让前面的,指导后面. 概念建设: d的最长前缀与最长后缀的匹配长度为3.(前缀不能到最后一 ...
- hdu3068 求一个字符串中最长回文字符串的长度 Manacher算法
最长回文 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
- 【2018.07.28】(字符串/回文串)学习Manacher算法小记
主要是应用在回文串啦,原理也理解了老半天,如果没有图片的话,我也看不太懂它的原理 学习的灵感来源来自于:https://segmentfault.com/a/1190000008484167 /* 最 ...
- Manacher算法 - 求最长回文串的利器
求最长回文串的利器 - Manacher算法 Manacher主要是用来求某个字符串的最长回文子串. 不要被manacher这个名字吓倒了,其实manacher算法很简单,也很容易理解,程序短,时间复 ...
- Manacher 算法-----o(n)回文串算法
回文的含义是:正着看和倒着看相同,如abba和yyxyy Manacher算法基本要点:用一个非常巧妙的方式,将所有可能的奇数/偶数长度的回文子串都转换成了奇数长度:在每个字符的两边都插 ...
随机推荐
- TCP协议的安全性分析
有算法就有破解法,因为它们都遵循了一定的数据结构和数学知识.所以网络安全是一个相对的概念,不可能出现绝对的安全!作为当今最流行的网络协议--TCP也是如此.那么TCP的安全问题究竟是哪些因素引起的呢? ...
- 多平台博客发布工具OpenWrite的使用
1 介绍 OpenWrite官网 OpenWrite是一款便捷的多平台博客发布工具,可以在OpenWrite编写markdown文档,然后发布到其他博客平台,目前已经支持CSDN.SegmentFau ...
- Java中的垃圾回收算法详解
一.前言 前段时间大致看了一下<深入理解Java虚拟机>这本书,对相关的基础知识有了一定的了解,准备写一写JVM的系列博客,这是第二篇.这篇博客就来谈一谈JVM中使用到的垃圾回收算法. ...
- CentOS Linux安装后扩充SWAP分区
1. 首先先查看目前swap分区大小: free -hm total used free shared buffers cached Mem: 11G 801M 10G 236K ...
- Django 表单处理流程
Django 的表单处理:视图获取请求,执行所需的任何操作,包括从模型中读取数据,然后生成并返回HTML页面(从模板中),我们传递一个包含要显示的数据的上下文.使事情变得更复杂的是,服务器还需要能够处 ...
- pgsql中的lateral使用小结
pgsql中的lateral 什么是LATERAL 带有LATERAL的SQL的计算步骤 LATERAL在OUTER JOIN中的使用限制(或定义限制) LATERAL的几个简单的例子 总结 举几个我 ...
- 数据表记录包含表索引和数值(int范围的整数),请对表索引相同的记录进行合并,即将相同索引的数值进行求和运算,输出按照key值升序进行输出
此题如果直接使用有序的TreeMap就不需要这样折腾: 1.map的key值唯一性,故就不在需要set集合来去重 2.使用map后利用key的唯一性,把序列号相同的数据直接加在一起,代码会很简洁 pa ...
- abp(net core)+easyui+efcore实现仓储管理系统——入库管理之九(四十五)
abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一) abp(net core)+ ...
- VMware15 安装Mac 10.14系统/苹果系统
安装环境 Windows专业版 VMware Workstation Pro 15 所需资源 VMware Workstation Pro 15.0.0 Build 10134415 官网下载地址:h ...
- PHP xml 外部实体注入漏洞学习
XML与xxe注入基础知识 1.XMl定义 XML由3个部分构成,它们分别是:文档类型定义(Document Type Definition,DTD),即XML的布局语言:可扩展的样式语言(Exten ...