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(); } };