Given a string, you are supposed to output the length of the longest symmetric sub-string. For example, given "Is PAT&TAP symmetric?", the longest symmetric sub-string is "s PAT&TAP s", hence you must output 11.
Input Specification:
Each input file contains one test case which gives a non-empty string of length no more than 1000.
Output Specification:
For each test case, simply print the maximum length in a line.
Sample Input:Is PAT&TAP symmetric?Sample Output:
11
ac代码:
//start 20:20
#include<stdio.h>
#include<string.h>
int max=0;
/*void issym(char *a,int c,int b)
{
int i,j,nmax=0;
if(c>=b) return;
if((b-c)%2==0)
{
for(i=(b-c)/2-1,j=(b-c)/2;i>=0&&j<b;i--,j++,nmax=nmax+2)
{
if(a[i]!=a[j])
break;
}
}
else
{
for(i=(b-c)/2-1,j=(b-c)/2+1,nmax=1;i>=0&&j<b;i--,j++,nmax=nmax+2)
if(a[i]!=a[j])
break;
}
if(nmax>max) max=nmax;
issym(a,c,(b-c)/2-1);
issym(a,(b-c)/2,b);
}
*/
int main()
{
// freopen("data.in","r",stdin);
int i,j,k,n,m;
char a[1010];
gets(a);
// issym(a,0,strlen(a));
for(i=0;i<strlen(a);i++)
{
for(j=0;i-j>=0,i+j<strlen(a);j++)
{
if(a[i-j]!=a[i+j]) break;
if(j*2+1>max)
{
max=j*2+1;
}
}
for(j=0;i-j>=0,i+j+1<strlen(a);j++)
{
if(a[i-j]!=a[i+j+1]) break;
if(j*2+2>max) max=j*2+2;
}
}
printf("%d\n",max);
return 0;
}