好串
题目描述
牛牛喜欢跟字符串玩耍,他刚刚学会了一个新操作,将一个字符串x插入另一个字符串y中(包括放在开头和结尾) 牛牛认为如果一个串是好的当这个串能按照如下方法被构造出来: 一开始,有一个空串,然后执行0次或者若干次操作,每次操作将ab插入当前的字符串
根据上面的定义,ab, aabb, aababb都是好串,aab,ba,abbb并不是好串
现在给你一个字符串s,判断s是否是好串
#include <iostream>
#include <stack>
#include <string>
class mySolution{
public:
std::string isGoodString(std::string aString){
std::stack<char> stack;
int lengthOfString=aString.size();
if(lengthOfString%2!=0){
return "Bad";
}
stack.push(aString[0]);
for(int i=1;i<lengthOfString;i++){
std::string tempString="";
if(!stack.empty()){
tempString+=stack.top();
tempString+=aString[i];
if(tempString=="ab"){
stack.pop();
}
else{
stack.push(aString[i]);
}
}
else{
stack.push(aString[i]);
}
}
if(!stack.empty()){
return "Bad";
}
return "Good";
}
};
int main(){
mySolution*solution=new mySolution();
std::string aString;
while(std::cin>>aString){
std::string answer=solution->isGoodString(aString);
std::cout<<answer<<std::endl;
}
return 0;
}