题目链接
括号匹配是典型的考查栈的题目
但是本题用数组模拟即可
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e3+5;
char arr[maxn];
int main(){
int n;
while(cin>>n){
string str;
while(n--){
cin>>str;
int k=0,flag=0;
for(int i=0;i<str.size();i++){
if(str[i]=='('||str[i]=='['||str[i]=='{'){
arr[k++] = str[i];
}else if(str[i]==')'||str[i]==']'||str[i]=='}'){
if(k<1){
flag=1;
break;
}
else if(str[i]==')'&&arr[k-1]!='('){
flag=1;
break;
}else if(str[i]==']'&&arr[k-1]!='['){
flag=1;
break;
}else if(str[i]=='}'&&arr[k-1]!='{'){
flag=1;
break;
}else k--;
}
}
if(flag|| k != 0) cout<<"no"<<endl;
else cout<<"yes"<<endl;
}
}
return 0;
}