模拟

【问题描述】

小A和小C是好朋友。

有一天,他们获得了一个字符串,这个字符串中只可能出现大写英文字母。

小A喜欢AC,小C喜欢CA,所以小A希望从这个字符串里找到一个AC然后挖走,小C也希望从这个字符串里找到一个CA然后挖走。任何一个人挖走一个字符串后,他们都会用BB填充原来的位置。

举个例子:如果原串为CACA,小A挖走了中间的AC,那么这个串就会变成CBBA。

他们找到了正在准备NOIP的你,希望你来告诉他们,他们的愿望能否同时得到满足?

【输入格式】

从ac.in读入。

输入包含多组数据。

每行一个字符串,对应一组数据。

【输出格式】

输出到ac.out。

对于每组数据,输出一行,如果能同时满足他们的愿望,输出”YES”(不含引号),否则输出”NO”(不含引号)。

【样例输入】

ACA

CABFAC

【样例输出】

NO

YES

【数据范围】

对于30%的数据,保证n<=1000。

对于100%的数据,保证n<=10^5,数据组数不超过10。这里的N表示的是单个字符串的长度。

#include <cstdio>
#include <iostream>
using namespace std;
int pos,w;
string s;
void ask1(string s);
void ask2(string s);
int main(){
    while(cin>>s){
        w=0;
        ask1(s);
        if(w==0)
            ask2(s);
        if(w==0)
            printf("NO\n");
        else
            printf("YES\n");
    }
    return 0;
}
void ask1(string s){
    pos=s.find("AC");
    if(pos==-1)
        return ;
    s.erase(pos,2);
    s.insert(pos,"BB",2);
    pos=s.find("CA");
    if(pos==-1)
        return ;
    w=1;
    return ;
}
void ask2(string s){
    pos=s.find("CA");
    if(pos==-1)
        return ;
    s.erase(pos,2);
    s.insert(pos,"BB",2);
    pos=s.find("AC");
    if(pos==-1)
        return ;
    w=1;
    return ;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值