题解 | #数列下标#
数列下标
https://ac.nowcoder.com/acm/contest/69850/A
首先最前面是a最后面是b,并且a和b数量一样,模拟放ab的过程,不管插入在哪,都会使一个好字符串每个a和b后面的a和b的数量+1,我们枚举最终字符串的a或b就行,我枚举的是a,包括该位的a后面所有a的数量一定是小于等于b的数量的,因为后面多的b可能与a前的部分匹配
#include<bits/stdc++.h>
using namespace std;
int main()
{
string a;
cin>>a;
int c1=0,c2=0;
for(int i=0;i<=a.size()-1;i++)
{
if(a[i]=='a')c1++;
else c2++;
}
if(c1!=c2)
{
cout<<"Bad";
return 0;
}
if(a[0]!='a'||a[a.size()-1]!='b')
{
cout<<"Bad";
return 0;
}
for(int i=0;i<=a.size()-2;i++)
{
if(a[i]=='a')
{
c1=0;
c2=0;
for(int j=i;j<=a.size()-1;j++)
{
if(a[j]=='a')c1++;
else c2++;
}
if(c1>c2)
{
cout<<"Bad";
return 0;
}
}
}
cout<<"Good";
}