题意:

给定字符串。求字符串中的最长回文序列

解题思路:

manacher 算法

时间复杂度:O(N)

代码:

#include <cstdio>
#include <cstring>
#include <algorithm>
#define MAXN 110010
using namespace std;
char b[MAXN],a[MAXN<<1];
int p[MAXN<<1];
int n;
int main(){
while(scanf("%s",&b[1])!=EOF){
int i;
for(i=1;b[i]!='\0';++i){
a[(i<<1)]=b[i];
a[(i<<1)+1]='#';
}
a[0]='?';
a[1]='#';
n=(i<<1)+2;
a[n]=0;
int MaxId,MaxL,id;
MaxId=MaxL=0;
memset(p,0,sizeof(p));
for(int i=1;i<n;++i){
if(MaxId>i)
p[i]=min(p[2*id-i],MaxId-i);
else
p[i]=1;
while(a[i+p[i]]==a[i-p[i]])
p[i]++;
if(p[i]+i>MaxId)
{
MaxId=p[i]+i;
id=i;
}
if(p[i]>MaxL)
MaxL=p[i];
}
printf("%d\n",MaxL-1);
}
return 0;
}

最新文章

  1. 1.[WP Developer体验Andriod开发]之Andriod布局 VS WinPhone布局
  2. 遍历Map的两种方法(有排序)
  3. php大力力 [010节]PHP常量
  4. ubuntu 关机,重启,注销命令
  5. android 定时执行一个任务
  6. 心情记录&amp;考试总结 3.30
  7. G++ 教程(转)
  8. 在Centos 5.4上安装Mysql5.5.10 (整理以前的工作文档)
  9. Android-Launcher开发之ShortCut(1)
  10. VisualVM监控远程主机上的JAVA应用程序
  11. TensorFlow实战之实现AlexNet经典卷积神经网络
  12. 图解TCP三次握手
  13. 1(2)IO流---字节流
  14. mysql 分页数据错乱
  15. idea中的language level 介绍
  16. Android Launcher分析和修改7——AllApp全部应用列表(AppsCustomizeTabHost)
  17. RabbitMQ学习笔记(一):安装及Springboot集成
  18. PHP学习方法总结
  19. P1446 [HNOI2008]Cards
  20. linux基础命令之sed

热门文章

  1. mipmap一
  2. 获得Oracle当前日期的年或月的第一天和最后一天
  3. selenium的PageObject设计模式
  4. 用PHP上传文件时$_FILES中error返回值详解
  5. kibana显示elasticsearch集群中flume到入的日志
  6. Spring中如何配置事务
  7. 利用eolinker实现api接口mock测试(mock server)
  8. 10. 修改端口号【从零开始学Spring Boot】
  9. 4. 使用别的json解析框架【从零开始学Spring Boot】
  10. java学习笔记——Collection集合接口