#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
char a[1100];
int dp[1100];
int max(int a,int b)
{
return a>b?a:b;
}
int main()
{
while(cin>>a)
{
int max = 0; //max记录最长回文长度
memset(dp,0,sizeof(dp));
int len = strlen(a);
for(int i = 0 ; i < len ; i++)
for(int j = i ; j < len ; j++)//通过一位数组DP[n]来模拟i--j之间是否回文
{
int flag=1;
for(int k = i ; k <= j ; k++) //模拟i到j之间是否回文 i < j ,i对应j
{ //主要是通过变量k实现
if(a[k]!=a[j-k+i]) //k从i开始每次加1,相应的j应该减去k到x间的距离对应的值
{ //k---(j-(k-x)) == k---j-k+i
flag =0;
break; //若不等,直接break
}
}
if(flag && j-i+1 >max)
max = j-i+1; //每次跟新最长回文长度
}
printf("%d\n",max);
}
return 0;
}
注:这种方法在数据较大,字符串较长时容易超时,因此 只适用于小数据处理