UVa 673 - Parentheses Balance

简单的栈应用。一开始忽略了判断栈是否为空。

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博客,格式可能有所偏差。 **