不会用map建立检查顺序,就直接简单粗暴写逻辑检验
#include <bits/stdc++.h>
using namespace std;
#define inf 0x3f3f3f3f
#define int long long
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
signed main() {
int t;
cin>>t;
while(t--)
{
string str;
cin>>str;
stack<char> pk;
int bj=1;
for(int i=0;i<str.size();i++)
{
if(str[i]=='['||str[i]=='<'||str[i]=='('||str[i]=='{')
{
if(str[i]=='[')
{
if(!pk.empty())
{
if(pk.top()!='{'&&pk.top()!='[')
{
cout<<"NO"<<endl;
bj=0;
break;
}
}
}
if(str[i]=='(')
{
if(!pk.empty())
{
if(pk.top()!='{'&&pk.top()!='['&&pk.top()!='(')
{
cout<<"NO"<<endl;
bj=0;
break;
}
}
}
if(str[i]=='<')
{
if(!pk.empty())
{
if(pk.top()!='{'&&pk.top()!='['&&pk.top()!='('&&pk.top()!='<')
{
cout<<"NO"<<endl;
bj=0;
break;
}
}
}
if(str[i]=='{')
{
if(!pk.empty())
{
if(pk.top()!='{')
{
cout<<"NO"<<endl;
bj=0;
break;
}
}
}
pk.push(str[i]);
continue;
}
if(str[i]=='>')
{
if(pk.empty())
{
cout<<"NO"<<endl;
bj=0;
break;
}else
{
if(pk.top()=='<')
{
pk.pop();
}else
{
cout<<"NO"<<endl;
bj=0;
break;
}
}
}
if(str[i]==']')
{
if(pk.empty())
{
cout<<"NO"<<endl;
bj=0;
break;
}else
{
if(pk.top()=='[')
{
pk.pop();
}else
{
cout<<"NO"<<endl;
bj=0;
break;
}
}
}
if(str[i]==')')
{
if(pk.empty())
{
cout<<"NO"<<endl;
bj=0;
break;
}else
{
if(pk.top()=='(')
{
pk.pop();
}else
{
cout<<"NO"<<endl;
bj=0;
break;
}
}
}
if(str[i]=='}')
{ if(pk.empty())
{
cout<<"NO"<<endl;
bj=0;
break;
}else
{
if(pk.top()=='{')
{
pk.pop();
}else
{
cout<<"NO"<<endl;
bj=0;
break;
}
}
}
}
if(bj)
{
cout<<"YES"<<endl;
}
}
}

京公网安备 11010502036488号