Description
对给定的字符串,本题要求你输出最长对称子串的长度。
例如,给定Is PAT&TAP symmetric?,最长对称子串为s PAT&TAP s,于是你应该输出11。
Input
在一行中给出长度不超过1000的非空字符串。
Output
在一行中输出最长对称子串的长度。
Sample Input 1
Is PAT&TAP symmetric?
Sample Output 1
11
#include <stdio.h>
#include<string.h>
int main()
{
char a[1010];
int count = 1, t = 1;//计数,最大计数
gets(a);//不能用scanf,空格会自动停止
for (int i = 0; i < strlen(a); i++)
{
count = 1;//初始化,每次重新计数
for (int k = 1; k <= strlen(a)/2; k++)//如果是奇数,找出对称轴
{
if (a[i - k] != '\0' && i - k >= 0 && a[i - k] == a[i + k])
count += 2;
else break;
if (count > t)
t = count;
}
count = 0;//初始化
for (int k = 0; k <= strlen(a)/2; k++)//如果是偶数,找对称数
{
int m = i - k;//对称数的第一个数
int n = i + k + 1;//对称数的第二个数
if (m >= 0 && a[m] == a[n])
count += 2;
else break;
if (count > t)
t = count;
}
}
printf("%d", t);
return 0;
}