您的位置:首页 > 其它

leetcode-20-Valid Parentheses

2017-03-03 17:19 387 查看

问题

题目:[leetcode-20]

思路

正常的匹配我就不说了,考虑两种特殊情形。

左括号个数大于右括号,当之前匹配成功的时候,最优的左括号会多。

右括号个数大于左括号时,当之前匹配成功的时候,栈会提前为空。

给你“]”这种数据。

代码

class Solution {
public:
bool isValid(string s) {
int sz = s.size();
if(!sz) return 0;

stack<char> stk;
for(int i = 0; i < sz; ++i){
if( s[i] == '(' || s[i] == '[' || s[i] == '{' )
stk.push(s[i]);
else{
if(stk.empty()) return false;
char& top = stk.top();
if( s[i] == ')' ){
if(top == '(') stk.pop();
else return false;
}
else if( s[i] == ']' ){
if(top == '[') stk.pop();
else return false;
}
else{
if( top =='{' ) stk.pop();
else return false;
}
}
}
return stk.empty();
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: