疯子的算法总结(七) 字符串算法之 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算法基本要点:用一个非常巧妙的方式,将所有可能的奇数/偶数长度的回文子串都转换成了奇数长度:在每个字符的两边都插 ...
随机推荐
- kepp running 团队视频分析初步总结
一.遇码则码队视频讨论: 时 间:2020.03.31 方 式:视频会议 参加人员:温学智,胡海靖,莫佳亮 二.视频讨论会议截图: 三.纪要内容: (1).主要功能和界面显示: 温学智:在 ...
- Mac系统中安装virtualenv虚拟环境
总体来说有三个步骤. 1.创建工作目录. python3 -m venv lanyue_env 注意: 2.安装virtualenv. pip3 install --user virtualenv 2 ...
- easy-mock 本地部署(挤需体验三番钟,里造会干我一样,爱象节款mock)
前言 很多小伙伴问我怎么在自己公司的项目里面添加配置mock,在vue项目里面都知道怎么配置mock,在大型前端项目里面就一脸疑惑了. 我就回答他,你今天会在vue项目里面用,那天换公司是用angul ...
- c++缓冲区 vBufferChar.hpp
//vbuffer_char.hpp //vov #ifndef V_BUFFER_CHAR_HPP #define V_BUFFER_CHAR_HPP #include <iostream&g ...
- linux知识点系列之 umask
介绍 umask(user's mask)用来设置文件权限掩码.权限掩码是由3个八进制的数字所组成,将现有的存取权限减掉权限掩码后,即可产生建立文件时预设的权限. UNIX最初实现时不包含umask命 ...
- windows/linux下如何更换Python的pip源
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:xlixiaohui PS:如有需要Python学习资料的小伙伴可以 ...
- Alpha-release 总结
因组员一周来事情较多,因此博客更新停滞了一个星期.这周我们已经开始了第二个release的相关工作,首先先对上一个release的工作进行简短总结. 团队在上个星期进行了alpha-release版本 ...
- Redisson 实现分布式锁的原理分析
写在前面 在了解分布式锁具体实现方案之前,我们应该先思考一下使用分布式锁必须要考虑的一些问题. 互斥性:在任意时刻,只能有一个进程持有锁. 防死锁:即使有一个进程在持有锁的期间崩溃而未能主动释放锁, ...
- linux sysbench : CPU性能测试详解
1.sysbench基础知识 sysbench的cpu测试是在指定时间内,循环进行素数计算 素数(也叫质数)就是从1开始的自然数中,无法被整除的数,比如2.3.5.7.11.13.17等.编程公式:对 ...
- vue2.x学习笔记(二十三)
接着前面的内容:https://www.cnblogs.com/yanggb/p/12639440.html. 渲染函数&JSX 基础 vue推荐在绝大多数的情况下使用模板来创建html.然而 ...