思路:
本题就是一个简单的括号匹配问题,使用栈便可轻松解决。
具体代码:
#include <iostream>
#include <string>
#include <stack>
using namespace std;
bool isValid(string& s)
{
stack<char> sc;
for(int i=0;i<s.size();++i)
{
switch(s[i])
{
case '(':
case '[':
sc.push(s[i]);
break;
case ']':
if(sc.empty()||sc.top()!='[')
return false;
else
sc.pop();
break;
case ')':
if(sc.empty()||sc.top()!='(')
return false;
else
sc.pop();
break;
}
}
if(sc.empty())
return true;
else
return false;
}
int main()
{
// freopen("input.txt","r",stdin);
int n;
cin>>n;
getchar();
string s;
for(int i=0;i<n;++i)
{
getline(cin,s);
if(s.empty()||isValid(s))
{
cout<<"Yes"<<endl;
}
else
cout<<"No"<<endl;
}
return 0;
}