好串

题目描述

牛牛喜欢跟字符串玩耍,他刚刚学会了一个新操作,将一个字符串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;
}