1040. Longest Symmetric String

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;
}

 


posted @ 2012-10-03 21:54  scjyldq  阅读(248)  评论(0)    收藏  举报