返回最长回文串的长度和该串
#include <iostream>
#include <cstring>
#include <cmath>
#include <cstdio>
#include <algorithm>
using namespace std;
int gcd(int a,int b)
{
return b==0?a:gcd(b,a%b);
}
int main()
{
string s;
getline(cin, s);
int maxvalue = 0,temp,mxi=0;
int len = s.length();
int k=1;
for(int i = 0; i < len; i++)
{
//奇数
k=0;
temp = 1;
for(int j = 1; j < len; j++)
{
if(i - j<0||i+j >= len || s[i - j] != s[i + j])
break;
temp += 2;
}
if(temp>maxvalue)
{
maxvalue=temp;
mxi=i;
}
temp=0;
//偶数长度
for(int j=1;j<len;j++)
{
if(i-j+1<0||i+j>=len||s[i-j+1]!=s[i+j])
break;
temp += 2;
}
if(temp>maxvalue)
{
maxvalue=temp;
mxi=i;
}
// maxvalue = temp > maxvalue ? temp : maxvalue;
}
cout<<maxvalue<<endl;
if(maxvalue%2==1) //j
{
for(int i=mxi-maxvalue/2;i<=(mxi+maxvalue/2);i++)
cout<<s[i];
}
else{
for(int i=mxi-maxvalue/2+1;i<=(mxi+maxvalue/2);i++)
cout<<s[i];
}
cout<<endl;
return 0;
}