Dcchen @ 2025-01-10 17:57:25
#include<iostream>
#include<string.h>
using namespace std;
int n,g[2000005],r[2000005],c[2000005];
int fi[2000005],se[2000005],ans;
string s;
int main(){
cin>>s;
int len=s.size();
s=" "+s;
for(int i=1;i<=len;i++){
g[i]=g[i-1];
r[i]=r[i-1];
if(s[i]=='G') g[i]++;
else r[i]++;
}
for(int i=1;i<=len;i++){
c[i]=g[i]-r[i];
}
fi[0]=1e9;
for(int i=1;i<=len;i++){
if(fi[c[i]]) continue;
else fi[c[i]]=i;
}
fi[0]=0;
for(int i=len;i>=1;i--){
if(se[c[i]]) continue;
else se[c[i]]=i;
}
for(int i=0;i<=2000001;i++){
ans=max(ans,se[i]-fi[i]);
}
cout<<ans<<'\n';
}
by liuzhuoran141516 @ 2025-01-10 18:55:29
@Dcchen 这不是AC代码吗
by Dcchen @ 2025-01-10 19:13:13
@liuzhuoran141516 我找到问题了,因为c[i] 不一定是正数,所以不能直接存普通数组