【问题描述】
小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 ;
}