
详细思路
遇到左括号,希望后面会有同类型有括号,放入栈,后遇到的左括号必须先闭合,所以正好用栈,遇到右括号,如果栈为空或者栈顶元素不是对应右括号都是错的,否则把那个对应类型右括号pop,如果长度是奇数直接错
精确定义
c正在遍历的字符
stk存储左括号或遇到右括号的时候栈顶正好是左括号的栈
class Solution { public: bool isValid(string s) { int n=s.size(); if(n%2==1)return false; stack<char>stk; for(char c:s){ if(c==')'||c==']'||c=='}'){ if(stk.empty())return false; if(c==')'&&stk.top()!='(')return false; if(c==']'&&stk.top()!='[')return false; if(c=='}'&&stk.top()!='{')return false; else stk.pop(); } else stk.push(c); } if(stk.empty())return true; else return false; } };
浙公网安备 33010602011771号