|
#include<bits/stdc++.h>
using namespace std;
const int N=260;
int n;
string str;
stack<int> s;
int b[N];
int main()
{
cin>>n;
for(int i=0;i<n;i++){
cin>>str;//接收字符串
while(!s.empty()) //清空栈,上次的数据若有残留。
{
s.pop();
}
bool fl = true;
int jb=0;
for(int i=0;i<str.size();i++){//入栈
//入栈,因为都是{','[','(','<'。表明他们的顺序关系。
if(str[i]=='{'||str[i]=='['||str[i]=='('||str[i]=='<') {
if(str[i]=='{') jb=1;
else if(str[i]=='[') jb=2;
else if(str[i]=='(') jb=3;
else if(str[i]=='<') jb=4;
if(!s.empty()&&s.top()>jb) {
fl =false;
break;
}else{
s.push(jb);
}
}else{
if(str[i]=='}') jb=1;
else if(str[i]==']') jb =2;
else if(str[i]==')') jb =3;
else if(str[i]=='>') jb =4;
if(s.empty()) {
fl=false;
break;
}else{
if(s.top()==jb){
s.pop();
}else{
fl=false;
break;
}
}
}
}
if(!s.empty())
cout<<"NO\n";
else if(fl)
cout<<"YES\n";
else
cout<<"NO\n";
}
return 0;
}
|
|