#include <iostream>
#include<stack>
using namespace std;
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param s string字符串
* @return bool布尔型
*/
bool isValid(string s) {
stack<char>a,b,c,e;
int l=s.length();string ss[l+2];int d=0;
for (int i=0;i<=l-1;++i){
a.push(s[i]);ss[++d]=s[i];
}
int n=a.size();
for (int i=1;i<=d-1;++i){
if (ss[i][0]=='['){
if (ss[i+1][0]==')'||ss[i+1][0]=='}'){
return false;
}
}
else if (ss[i][0]=='('){
if (ss[i][0]==']'||ss[i+1][0]=='}'){
return false;
}
}
else if (ss[i][0]=='{'){
if (ss[i][0]==')'||ss[i+1][0]==']'){
return false;
}
}
}
for (int i=0;i<=n-1;++i){
if (a.top()=='['||a.top()==']'){
b.push(a.top());a.pop();
}
else if (a.top()=='('||a.top()==')'){
c.push(a.top());a.pop();
}
else if (a.top()=='{'||a.top()=='}'){
e.push(a.top());a.pop();
}
}
int l1=0,l2=0;
while (b.size()!=0){
if (b.top()=='[')l1++;
else if (b.top()==']')l2++;
b.pop();
if (l1<l2)return false;
}
if (l1!=l2)return false;
l1=0,l2=0;
while (c.size()!=0){
if (c.top()=='(')l1++;
else if (c.top()==')')l2++;
c.pop();
if (l1<l2)return false;
}
if (l1!=l2)return false;
l1=0,l2=0;
while (e.size()!=0){
if (e.top()=='{')l1++;
else if (e.top()=='}')l2++;
e.pop();
if (l1<l2)return false;
}
if (l1!=l2)return false;
return true;
}
};