博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
最长回文(hdu 3068)
阅读量:5075 次
发布时间:2019-06-12

本文共 1073 字,大约阅读时间需要 3 分钟。

Problem Description

给出一个只由小写英文字符a,b,c...y,z组成的字符串S,S中最长回文串的长度.回文就是正反读都是一样的字符串,aba, abba 

 

Input

输入有多组case,不超过120,每组输入为一行小写英文字符a,b,c...y,z组成的字符串S,两组case之间由空行隔开(该空行不用处理),字符串长度len <= 110000

 

 

Output

每一行一个整数x,对应一组case,表示该组case的字符串中所包含的最长回文长度.

 

 

Sample Input

aaaa

 

abab

 

 

Sample Output

4

3

#include
#include
#include
#define M 220010using namespace std;char s,s1[M],s2[M];int n,p[M];void manacher(){ int id=0,mx=0,ans=0; for(int i=2;i<=2*n;i++) { if(mx>i)p[i]=min(p[2*id-i],mx-i); else p[i]=1; while(s2[i+p[i]]==s2[i-p[i]])++p[i]; if(i+p[i]>mx) { id=i; mx=i+p[i]; } ans=max(ans,p[i]-1); } printf("%d\n",ans);}void init(){ n=strlen(s1); s2[0]='$'; for(int i=0;i<=n;i++) s2[2*i+1]='#',s2[2*i+2]=s1[i]; manacher();}int main(){ while(scanf("%s",s1)!=EOF) { memset(p,0,sizeof(p)); memset(s2,0,sizeof(s2)); init(); } return 0;}
View Code

 

转载于:https://www.cnblogs.com/harden/p/5751138.html

你可能感兴趣的文章
团队项目开发客户端——登录子系统的设计
查看>>
IO—》Properties类&序列化流与反序列化流
查看>>
session如何保存在专门的StateServer服务器中
查看>>
react展示数据
查看>>
测试计划
查看>>
选择器
查看>>
Mysql与Oracle 的对比
查看>>
jquery实现限制textarea输入字数
查看>>
thinkphp5 csv格式导入导出(多数据处理)
查看>>
PHP上传RAR压缩包并解压目录
查看>>
Codeforces 719B Anatoly and Cockroaches
查看>>
jenkins常用插件汇总
查看>>
c# 泛型+反射
查看>>
第九章 前后查找
查看>>
Python学习资料
查看>>
jQuery 自定义函数
查看>>
jquery datagrid 后台获取datatable处理成正确的json字符串
查看>>
ActiveMQ与spring整合
查看>>
web服务器
查看>>
网卡流量检测.py
查看>>