lisquid @ 2023-10-05 22:46:13
#include<bits/stdc++.h>
using namespace std;
int r[1000010],g[1000010],b=0,c=0,s[1000010];//r-g
string a;
int main(){
cin>>a;
r[0]=0,g[0]=0,s[0]=r[0]-g[0];
int m=a.size();
for(int i=0;i<m;i++){
r[i]=r[i-1];
g[i]=g[i-1];
s[i]=s[i-1];
if(a[i]=='G'){
g[i]++;
b++;
}
if(a[i]=='R'){
r[i]++;
c++;
}
s[i]=r[i]-g[i];
}
int ans=0;
for(int i=0;i<m;i++){
for(int j=i;j<m;j++){
if(s[j]-s[i]==0){
ans=max(ans,j-i);
}
}
}
if(b!=c){
cout<<ans;
}
else{
cout<<m;
}
return 0;
}
by Galaxy_Ivan @ 2023-10-18 22:17:09
倘若阁下得到一个答案为前k个宝石合成一条最长稳定链的情况,如GRGRGRGRGRRRRRGGRGRG,阁下又当如何应对?
不要忘了前k个宝石就是答案的特例