牛牛喜欢跟字符串玩耍,他刚刚学会了一个新操作,将一个字符串x插入另一个字符串y中(包括放在开头和结尾) 牛牛认为如果一个串是好的当这个串能按照如下方法被构造出来: 一开始,有一个空串,然后执行0次或者若干次操作,每次操作将ab插入当前的字符串
根据上面的定义,ab, aabb, aababb都是好串,aab,ba,abbb并不是好串
现在给你一个字符串s,判断s是否是好串 输入描述: 输入一行包含一个字符串,长度不超过50 输出描述: 输出"Good" 或者 “Bad” 示例1 输入 ab 输出 Good 示例2 输入 aab 输出 Bad 示例3 输入 abaababababbaabbaaaabaababaabbabaaabbbbbbbb 输出 Bad 备注: 子任务1:n <= 10 子任务2:n <= 20 子任务3:无限制
//用栈来解决 //扫描字符串,如果遇到a,入栈 //如果遇到b,将栈顶的a出栈(注意判空,如果空,输出Bad) //扫描完字符串,如果栈空,则Good,反之。 #include<bits/stdc++.h> using namespace std; int main() { stack<char>s; string a; cin>>a; int i; if(a.length()==1) cout<<"Bad"; else { for(i=0;i<a.length();i++) { if(a[i]=='a') s.push(a[i]); else if(a[i]=='b') { if(!s.empty()) s.pop(); else { cout<<"Bad"; break; } } } if(i==a.length()&&s.empty()) cout<<"Good"; else if(i==a.length()&&!s.empty()) cout<<"Bad"; } return 0; }