对给定的字符串,本题要求你输出最长对称子串的长度。例如,给定Is PAT&TAP symmetric?
,最长对称子串为s PAT&TAP s
,于是你应该输出11。
输入格式:
输入在一行中给出长度不超过1000的非空字符串。
输出格式:
在一行中输出最长对称子串的长度。
样例:">输入样例:
Is PAT&TAP symmetric?
结尾无空行
输出样例:
11
结尾无空行
代码:
//长度最小为1,所以max初始为1
//分为两种:长度为奇数,长度为偶数
#include<stdio.h>
#include<string.h>
int main()
{
int i,max = 1,max1,max2,q,h;
char a[1001];
gets(a);
for(i = 0;i<strlen(a);i++)//奇数,从头至尾以每一位为对称轴
{
max1 = 1;
q = i-1;
h = i+1;
while(q>=0&&h<strlen(a))
{
if(a[q]==a[h]) max1 = max1 +2 ;
else break;
q--;
h++;
}
if(max1>max) max = max1;
}
for(i = 0;i<strlen(a);i++)
{
max2 = 0;
q = i;
h = i+1;
while(q>=0&&h<strlen(a))
{
if(a[q]==a[h]) max2 = max2 +2 ;
else break;
q--;
h++;
}
if(max2>max) max = max2;
}
printf("%d",max);
return 0;
}