求助,就第四个测试点WA了
查看原帖
求助,就第四个测试点WA了
22240
卢浙浩楼主2020/11/30 00:05
#include<stdio.h>
char s[30000000];
int size[30000000];
int main(){
	int l=1;
	s[0]='#';
	while(~scanf("%c",&s[l++]))
		s[l++]='#';
	l-=3;
	//printf("%d\n",l);
	int mirror,max=0,center=0,i,j;
	for(i=0;i<l;i++){
		if(i<max){
			mirror=2*center-i;
			if(max<=i+size[mirror])
				j=max-i+1;
			else{
				size[i]=size[mirror];
				continue;
			}
		}else	j=1;
		while(i-j>-1&&i+j<l&&s[i-j]==s[i+j])
			j++;
		size[i]=--j;
		if(i+j>max){
			max=i+j;
			center=i;
		}
	}
	/*
	for(i=0;i<l;i++)
		printf("%d ",size[i]);
	printf("\n");
	*/
	max=0;
	for(i=0;i<l;i++){
		if(size[i]>max)
			max=size[i];
	}
	printf("%d\n",max);
	return 0;
}
2020/11/30 00:05
加载中...