lyhokia @ 2018-06-22 17:21:47
代码如下,使用了前缀和的做法
#include <cstdio>
#include <cstring>
#define max(a, b)(a) > (b) ? (a) : (b)
int first[1000005];
char str[1000005];
int main(){
memset(first, 63, sizeof(first));
gets(str);
//printf("hello\n");
int len = strlen(str);
int cur = 0;
int ans = 0;
first[0] = -1;
for(int i = 0; i < len; ++i){
cur += (str[i] == 'G') ? 1 : -1;
//printf("%d\n", cur);
if(first[cur] > 1000005)first[cur] = i;
else ans = max(ans, i - first[cur]);
}
printf("%d\n", ans);
return 0;
}
by lyhokia @ 2018-06-27 16:25:59
求一下最后一个数据点。。