和括号匹配一样,左括号压栈右括号与栈顶的左括号匹配出栈,如果中间无法与右括号匹配或最后A有剩余,即为Bad。
#include <bits/stdc++.h> using namespace std; int main() { stack<int> st; string s; cin>>s; for (int i=0;i<s.size();i++) { if (s[i]=='a') { st.push('a'); } else { if (st.empty()||st.top()!='a') { cout<<"Bad"<<endl; return 0; } st.pop(); } } if (!st.empty()) { cout<<"Bad"<<endl; return 0; } cout<<"Good"<<endl; return 0; }