#include<iostream>
#include<cstring>
using namespace std;
string s,tmp;
char str[200005];
int pos[200005];
int cnt=0;
bool check(int x,int len)//x为回文字符串的起点,len为长度
{
if(x+len>cnt) return 0;//长度超过字母子串的长度则直接返回
for(int i=0;i<len/2;i++)
{
if(str[x+i]!=str[x+len-i-1])//不符合回文字符串的条件返回false
return 0;
}
return 1;
}
int main()
{
while(getline(cin,tmp))
{
s+=tmp;
s+="\n";
}
int len=s.size();
for(int i=0;i<len;i++)//str储存该字符串中的字母
{
if(s[i]>='a' && s[i]<='z')
{
str[cnt]=s[i];
pos[cnt]=i;
cnt++;
}
else if(s[i]>='A' && s[i]<='Z')
{
str[cnt]=s[i]+32;
pos[cnt]=i;
cnt++;
}
}
int maxn=-1,mark=0;
for(int i=0;i<cnt;i++)//遍历每一个字母
{
for(int j=maxn+1;j<=2010;j++)//枚举回文字符串可能长度
{
if(check(i,j) && j>maxn)//判断是否为回文字符串
{
maxn=j;//maxn储存最大回文字符串的长度
mark=i;//mark储存最大回文字符串的起点
}
}
}
cout << maxn << endl;
for(int i=pos[mark];i<=pos[mark+maxn-1];i++)//pos[mark]表示起点
cout << s[i];
return 0;
}
str改成string就wa两个点了