简单的栈应用。一开始忽略了判断栈是否为空。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| #include<iostream> #include<string> #include<stack> #include<map> using namespace std; int n; string s; map<char,char>a; int main(){ a[')']='('; a[']']='['; cin>>n; cin.get(); while(n--){ stack<char>c; getline(cin,s); int i; for(i=0;i<s.length();i++){ if(s[i]=='('||s[i]=='[') c.push(s[i]); else if(s[i]==')'||s[i]==']'){ if(c.empty()) break; if(c.top()==a[s[i]]) c.pop(); else break; } else continue; } if(i==(int)s.length()&&c.empty()) cout<<"Yes"<<endl; else cout<<"No"<<endl; } return 0; }
|
** 本文迁移自我的CSDN博客,格式可能有所偏差。 **