class Solution {
public:
/**
*核心思想:将括号转化为数字,判断是否匹配。
{ 1
[ 2
( 3
) 4
] 5
} 6
看栈顶元素加当前元素是否为7,是否为空。
*/
int ID(char a)
{
if(a=='[') return 1;
if(a=='{') return 2;
if(a=='(') return 3;
if(a==')') return 4;
if(a=='}') return 5;
if(a==']') return 6;
return 0;
}
bool isValid(string s) {
// write code here
stack<char> sta;
for(char c:s)
{
int n=ID(c);
if(n==0) return false;
if(n>3)
{
if(sta.empty()||ID(sta.top())+n!=7)
{
return false;
}
else sta.pop();
}
if(n>=1&&n<=3)
{
sta.push(c);
}
}
return sta.empty();
}
};