423. 有效的括号序列
给定一个字符串所表示的括号序列,包含以下字符: '(', ')'
, '{'
, '}'
, '['
and ']'
, 判定是否是有效的括号序列。
您在真实的面试中是否遇到过这个题?
Yes
样例
括号必须依照 "()"
顺序表示, "()[]{}"
是有效的括号,但 "([)]"
则是无效的括号。
相关题目
思路:用栈解决这种符号匹配问题最为合适
AC代码:
bool isValidParentheses(string &s) {
// write your code here
int l=s.size();
stack<char> buf;
for(int i=0;i<l;i++){
if(s[i]=='('||s[i]=='{'||s[i]=='['){
buf.push(s[i]);
}
else if(s[i]==')'){
if(!buf.empty()&&buf.top()=='('){ //当buf不为空且顶端为'('的时候
buf.pop();
}else{
return false;
}
}
else if(s[i]=='}'){
if(!buf.empty()&&buf.top()=='{'){
buf.pop();
}else{
return false;
}
}
else {
if(!buf.empty()&&buf.top()=='['){
buf.pop();
}else{
return false;
}
}
}
return buf.empty();
}