51nod-【hihocoder #1032 : 最长回文子串】

来源:互联网 发布:网络招聘怎么做 编辑:程序博客网 时间:2024/05/16 23:46
<span style="font-size:18px;"></span>
<span style="font-size:18px;">include<cstdio>#include<cstring>char str[3000000],s[3000000];int p[3000000];int min(int a,int b){if(a<b)return a;return b; } int max(int a,int b){if(a>b)return a;return b; } int main(){int t;scanf("%d",&t);while(t--){memset(p,0,sizeof(p));memset(s,'\0',sizeof(s)); scanf("%s",str);int len=strlen(str),i;for(i=len;i>=1;--i){s[i*2+1]='#';s[i*2]=str[i-1]; } s[0]='@';s[1]='#';int mx=0,mi=0,ans=0;len=strlen(s);p[0]=1; for(i=1;i<len;++i){if(i<mx)p[i]=min(p[2*mi-i],mx-i);elsep[i]=1;while(s[i+p[i]]==s[i-p[i]])p[i]+=1;if(mx<p[i]+i){mx=p[i]+i;mi=i;} ans=max(ans,p[i]-1); } printf("%d\n",ans); }return 0; }</span>

0 0
原创粉丝点击