codeforces 960A Check the string
题目链接:http://codeforces.com/contest/960/problem/A
题意:有A,B,C三个小朋友,A会把一个全为a的字符串给B,然后B会在这个字符串尾添加若干个b,然然后把字符串给C,C可以在字符串尾添加和a或者b相同个数的c。然后给你一个字符串,问你能不能通过这样得到,可以输出YES,不可以输出NO
分析:我们可以先统计开头a的个数,当b出现的时候我们开始统计b的个数,当c出现的时候我们统计c的个数,如果a+b+c=字符串长度,并且a=c或者b=c,我们输出YES,否则输出NO就可以了。(需要保证a,b不为0)
AC代码:
1 #include<bits/stdc++.h> 2 3 using namespace std; 4 5 int main(){ 6 ios_base::sync_with_stdio(0); 7 cin.tie(0); 8 string s; 9 while(cin>>s){ 10 int d=s.length(); 11 int a=1,b=0,c=0; 12 if(s[0]!='a'){ 13 cout<<"No"<<endl; 14 continue; 15 } 16 for(int i=1;i<d;i++){ 17 if(s[i]=='a'&&b==0){ 18 a++; 19 } 20 else if(s[i]=='b'&&c==0){ 21 b++; 22 } 23 else if(s[i]=='c') c++; 24 } 25 if(a+b+c==d&&(a==c||b==c)&&a!=0&&b!=0){ 26 cout<<"Yes"<<endl; 27 } 28 else cout<<"No"<<endl; 29 } 30 31 return 0; 32 }