题意很简单,给你一个字符串,要求你求出一个最长的形似于w(wr)w(wr)的最长连续子串的长度。wr表示w的逆序串。

在这里大家很容易就能想到Manacher算法求回文串。没有错,就是这个。

算法的详细过程我就不说了,直接说后面的实现吧。

通过manacher算法我们可以在O(N)的时间复杂度以内求出一每两个字符空缺处为对称轴的最长回文串的长度。

这样我们可以对于每一个空缺位置逐一枚举,然后分别对匹配求出一个最长的回文串就可以了。

中间有好多细节要优化哦,我wa了好几发。还有在写的时候一定要写出各种优化。代码不要写挫了。

 #include <iostream>
#include <cstring>
#include <cstdio>
#define maxn 1000100
using namespace std; char tep[maxn],s[*maxn];
int a[*maxn],n,ans,now; void init()
{
now=;
s[]='@';
s[]='#';
for (int i=; tep[i]; i++)
{
s[now++]=tep[i];
s[now++]='#';
}
s[now]='$';
s[now+]=;
} void deal()
{
memset(a,,sizeof a);
int mx_c=,mx_r=;
a[]=;
for (int i=; i<now; i++)
{
if (mx_r>i)
{
a[i]=min(mx_r-i+,a[*mx_c-i]);
}
else a[i]=;
while (s[i-a[i]]==s[i+a[i]]) a[i]++;
if (i+a[i]>mx_r) mx_r=i+a[i]-,mx_c=i;
}
} int main()
{
int cas;
scanf("%d",&cas);
while (cas--)
{
scanf("%s",tep);
for (int i=; tep[i]; i++)
if (tep[i]>='A' && tep[i]<='Z')
tep[i]=tep[i]-'A'+'a';
ans=;
init();
deal();
for (int i=; s[i]; i+=)//这里一定是+2,只有空缺处才是满足条件的。
{
int cur=a[i]-;
while (cur%!= || cur/>=i) cur--;
for (; cur>ans; cur-=)
{
if (a[i+cur/]>=cur/+ && a[i-cur/]>=cur/+)
{
ans=cur;
break;
}
}
}
printf("%d\n",ans);
}
return ;
}

最新文章

  1. Sencha ExtJS 6 Widget Grid 入门
  2. Java: IO 学习小结
  3. 基于Metronic的Bootstrap开发框架经验总结(3)--下拉列表Select2插件的使用
  4. UVA 12169 Disgruntled Judge【扩展欧几里德】
  5. vertical-align属性
  6. C++:概述
  7. Windows 8 系统完全上手指南 - 非常详尽的 Win8 系统入门学习手册与使用技巧专题教程!
  8. c#语言基础编程-转义符
  9. HDOJ 2081 手机短号
  10. C#.NET中的CTS、CLS和CLR
  11. hibernate的session详解
  12. Python中的@符号
  13. 深入理解之 Android Handler
  14. CF1056E Check Transcription 字符串哈希
  15. vue系列之概念
  16. [LeetCode] 830. Positions of Large Groups_Easy tag: Two Pointers
  17. UI设计师需要熟记的45个快捷键Windows、Mac
  18. .Net Discovery 系列之六--深入浅出.Net实时编译机制(下)
  19. install ros-indigo-map-server
  20. URAL 1996 Cipher Message 3 (FFT + KMP)

热门文章

  1. 20155317 王新玮 2016-2017-2 《Java程序设计》第5周学习总结
  2. GBDT为什么不能并行,XGBoost却可以
  3. Django模型层:多表查询
  4. Django模型层:单表操作
  5. js文件上传库
  6. Spring学习(一)-----Spring 模块详解
  7. 小白初识 - 快速排序(QuickSort)
  8. 接口测试工具Postman接口测试图文教程
  9. 微软职位内部推荐-Senior Software Lead-Index Gen
  10. Amazon - removed your selling privileges and placed a temporary hold on any funds - 1