#include<bits/stdc++.h>
using namespace std;
bool is_palindrome(int i,int j,string &s){
int m,n;
for(m=i,n=j;m<n;m++,n--){
if(s[m]!=s[n])
return false;
}
return true;
}
int main(){
int i,j,len1,len2,left=0,right=0,n;
string s;
cin>>s;
n=s.size();
if(is_palindrome(0,n-1,s)){
cout<<s;
return 0;
}
for(i=0,j=n-1;i<j;i++,j--)
if(s[i]!=s[j]){
len1=i;
len2=j;
break;
}
for(i=len1,j=len2;i<=j;j--)
if(is_palindrome(i,j,s)){
left=j-i;
break;
}
for(i=len1,j=len2;i<=j;i++)
if(is_palindrome(i,j,s)){
right=j-i;
break;
}
if(left>=right){
for(i=0;i<=len1+left;i++)
cout<<s[i];
for(i=len2+1;i<n;i++)
cout<<s[i];
}
else{
for(i=0;i<len1;i++)
cout<<s[i];
for(i=len2-right;i<n;i++)
cout<<s[i];
}
cout<<endl;
return 0;
}
包含两端中一个的最长回文序列
最新推荐文章于 2024-02-22 10:36:27 发布