题解 | #数列下标#

数列下标

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";
}
全部评论

相关推荐

1 收藏 评论
分享
牛客网
牛客企业服务