码迷,mamicode.com
首页 > 其他好文 > 详细

manachar

时间:2017-11-09 20:49:45      阅读:116      评论:0      收藏:0      [点我收藏+]

标签:eof   return   etc   div   --   clu   man   space   char s   

#include <bits/stdc++.h>
using namespace std;
char str[20005],str1[40005],len=0;
int p[40005];
int manachar(){
int id=0,maxn=0,ans=0,j=1;
	str1[0]=‘@‘;
	for(int i=0;i<=len;i++){
		str1[j++]=str[i];
		str1[j++]=‘#‘;
	}
	str1[j]=0;
	for(int i=0;i<j;i++){
		if(i<maxn)
			p[i]=max(maxn-i,p[2*id-i]);
		else
			p[i]=1;
		while(str1[i+p[i]]==str1[i-p[i]])
			p[i]++;
		if(p[i]+i>maxn){
			maxn=p[i]+i;
			id=i;
		}
		ans=max(ans,p[i]);
	}
	return ans-1;
}
int main(){
	while((str[len]=getchar())!=EOF)len++;
	len--;
	cout<<manachar();
	return 0;
}

  

manachar

标签:eof   return   etc   div   --   clu   man   space   char s   

原文地址:http://www.cnblogs.com/HC-LittleJian/p/7811017.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!