#include "iostream"
#include "vector"
#include "algorithm"
#include "string"
#include "stack"
using namespace std;
vector<string>::iterator it;
stack<char> t;
bool paren(const std::string &str)
{
std::stack<char> s;
for (int i = 0; i < str.size(); i++)
{
switch (str[i])
{
case '(':s.push(str[i]); break;
case '[':s.push(str[i]); break;
case '{':s.push(str[i]); break;
case ')':
if (s.top() != '(')
return false;
else
s.pop(); break;
case ']':
if (s.top() != '[')
return false;
else
s.pop(); break;
case '}':
if (s.top() != '{')
return false;
else
s.pop(); break;
default:
break;
}
}
return s.empty();
}
int main(){
int n;
cin>>n;
vector<int> out;
vector<int>::iterator ot;
for(int k=0;k<n;k++){
std::string strBuf;
cin >> strBuf;
/*for(it=s.begin();it!=s.end();it++){
cout<<*it<<endl;
}*/
out.push_back(paren(strBuf));
}
for(ot=out.begin();ot!=out.end();ot++){
if(*ot==1)
cout<<"yes"<<endl;
if(*ot==0){
cout<<"no"<<endl;
}
}
return 0;
}
括号匹配问题
最新推荐文章于 2020-04-13 17:44:42 发布