题解 | 好串

好串

https://www.nowcoder.com/practice/9b072237ebdd4dd99562f01cbf594fac

题干解读:要求检查输入的字符串s是否是由字符串ab在任意次插入操作后得到的值。

思路:

使用栈匹配的方式,使用哈希表来模拟匹配过程,当不匹配或为空时存入栈中,匹配时则弹出栈顶元素,最后再检查栈是否为空。

空则全部匹配成功,是好串.非空则匹配失败,不是好串.

#include <iostream>
#include<stack>
#include<unordered_map>
using namespace std;

int main() {
    stack<char> a;
    string s;
    cin>>s;
    unordered_map<char,char> map;
    map.emplace('a','b');
    for(char i:s){
        if(a.empty()){
            a.push(i);
        }else{
            if(map[a.top()] == i){
                a.pop();
            }else{
                a.push(i);
            }
        }

    }
    if(a.empty()){
        cout<<"Good";
    }else {
        cout<<"Bad";
    }

}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务