题目描述
思路分析
栈模拟
其实合法括号序列有如下性质:
1.任意前缀中,右括号数量不大于左括号数量。
2.左括号总数等于右括号总数。
利用这个性质去做dp也行,我这里就模拟简单做了。
代码实现
class Solution {
public:
bool isValid(string s) {
stack<char> stk;
for(int i=0;i<s.size();i++){
if(s[i]=='('||s[i]=='['||s[i]=='{') stk.push(s[i]);
else {
if(stk.size()&&(s[i]==')'&&stk.top()=='('||s[i]==']'&&stk.top()=='['||s[i]=='}'&&stk.top()=='{')) stk.pop();
else return false;
}
}
if(stk.size()==0) return true;
else return false;
}
};