题解 | 好串
好串
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";
}
}