看了题解又觉得自己好傻币
相信你马上也会觉得自己很傻逼的
#include <bits/stdc++.h>
using namespace std;
const int maxn=1e6+10;
int vis[maxn];
char s[maxn];
int main()
{
scanf("%s",s+1);
int l=1,r=strlen(s+1),x=0,len=strlen(s+1);
while( 1 )
{
if( r-l+1<4 )
{
if( r>l ) x=l+1;
break;
}
if( s[l]==s[r] )
{
vis[l]=vis[r]=1;
l++,r--;
}
else if( s[l+1]==s[r] )
{
vis[l+1]=vis[r]=1;
l+=2,r--;
}
else if( s[l]==s[r-1] )
{
vis[l]=vis[r-1]=1;
l++,r-=2;
}
else if( s[l+1]==s[r-1] )
{
vis[l+1]=vis[r-1]=1;
l+=2,r-=2;
}
}
for(int i=1;i<=len;i++)
{
if( x!=0&&i>=x ) x=0,cout << s[i];
if( vis[i] ) putchar(s[i]);
}
}