题目描述
有一种项链,由红宝石和蓝宝石组成。仅当红宝石和蓝宝石数目相同的时候,项链才最稳定,不易断链。
小爱想知道从给定的项链中,可以截取一段最长的稳定的子串,有多少颗宝石组成。
红宝石用‘R’表示,蓝宝石用‘B’表示。
输入格式
一行由R和B组成的字符串
输出格式
最长的稳定的子串由多少颗宝石组成。
样例输入
BRBBRB
样例输出
4
问题提示
数据范围:
宝石数<=1000
本题线下文件测评时的说明:
- 可执行文件名:stone
- 提交源程序文件名:stone.cpp
- 输入文件名:stone.in
- 输出文件名:stone.out
- 时间限制:1秒
- 空间限制:256MB
CODE
#include <bits/stdc++.h>
using namespace std;
int n,a[1005],s[1005];
char c;
int main()
{
//freopen("stone.in","r",stdin);
//freopen("stone.out","w",stdout);
while(cin>>c){
a[++n]=(c=='R'?1:0);
s[n]=s[n-1]+a[n];
}
int maxs=0;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
int len=j-i+1;
if(n%2!=0) continue;
if(s[j]-s[i-1]==len/2){
maxs=max(maxs,len);
}
}
}
cout<<maxs;
return 0;
}