为什么这个代码本地没问题,ide上re
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<iomanip>
#include<algorithm>
#define ll long long
#define ull unsigned long long
using namespace std;
//char t[20010];
//chtsr no[2010];
struct node{
char a;
bool wu;
}t[20010];
int n=-1,leftn,rightn,longn,maxn,maxleft,maxright;
int main(){
while (scanf("%c",&t[++n].a)!=EOF);
for(int i=1;i<n;i++){
if(t[i].a>='A' && t[i].a<='Z'){
t[i].a+=32;
t[i].wu=1;
}
}
for(int i=1;i<n-1;i++){
for(int j=i+1,k=i-1;j<n && k>=0;j++,k--){
// cout<<(int)t[i]<<" "<<(int)t[j]<<" "<<(int)t[k]<<endl;
if(((int)t[i].a<65 || (int)t[i].a>122) || ((int)t[i].a>90 && (int)t[i].a<97)){
break;
}
while(((int)t[j].a<65 || (int)t[j].a>122) || ((int)t[j].a>90 && (int)t[j].a<97)){
j++;
}
while(((int)t[k].a<65 || (int)t[k].a>122) || ((int)t[k].a>90 && (int)t[k].a<97)){
k--;
}
if(t[j].a==t[k].a){
leftn=k;
rightn=j;
}else{
break;
}
}//cout<<endl;
longn=rightn-leftn+1;
if(longn>maxn){
maxn=longn;
maxleft=leftn,maxright=rightn;
}
}
// cout<<maxleft<<" "<<maxright<<endl;
for(int i=maxleft;i<=maxright;i++){
if(((int)t[i].a<65 || (int)t[i].a>122) || ((int)t[i].a>90 && (int)t[i].a<97)){
maxn--;
}
}
cout<<maxn<<endl;
for(int i=maxleft;i<=maxright;i++){
if(t[i].wu==1){
t[i].a-=32;
cout<<t[i].a;
}else{
cout<<t[i].a;
}
}
return 0;
}