点击打开链接
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<string>
#include<cstring>
#include<string.h>
#include<math.h>
#include<algorithm>
#include<queue>
#include<vector>
#include<set>
#define LL long long
#define inf 0x3f3f3f3f
#define mod 1e9+7
using namespace std;
class Solution {
public:
string longestPalindrome(string s) {
if(s.length()==1) return s;
char temple[10005];
int len=s.length();
int num=0,max_num=0,flag=0,max_num1=0,flag1=0,i=0;
for(i=0;i<len;i++){
num=1;
while (i-num>=0&&i+num<len) {
if(s[i-num]!=s[i+num]) break;
if(num>max_num){
max_num=num;
flag=i;
}
num++;
}
}
for(i=0;i<len;i++){
num=0;
while (i-num>=0&&i+num+1<len) {
if(s[i-num]!=s[i+num+1]) break;
if(num>=max_num1){
max_num1=num+1;
flag1 =i;
}
num++;
}
}
if(2*max_num+1>2*max_num1){
for(i=0;i<=2*max_num;i++){
temple[i] = s[i+flag-max_num];
}
temple[2*max_num+1]='\0';
}
else{
//cout<<flag1<<" "<<max_num1<<endl;
for(i=0;i<2*max_num1;i++){
temple[i]=s[i+flag1-max_num1+1];
}
temple[2*max_num1]='\0';
}
//printf("%s\n",temple);
return temple;
}
};
int main()
{
char s[1005];
scanf("%s",s);
Solution temple;
cout<<temple.longestPalindrome(s)<<endl;
return 0;
}