您的位置:首页 > 其它

LeetCode 20: Valid Parentheses

2015-10-21 13:35 274 查看

Valid Parentheses

Given a string containing just the characters ‘(‘, ‘)’, ‘{‘, ‘}’, ‘[’ and ‘]’, determine if the input string is valid. The brackets must close in the correct order, “()” and “()[]{}” are all valid but “(]” and “([)]” are not.

解题思路

使用栈(stack)即可解决该问题:代码如下:

class Solution {
public:
bool isValid(string s) {
stack<char> cs;
int slen = s.length();
for (int i = 0; i < slen; ++i) {
if (s[i] == '(' || s[i] == '{' || s[i] == '[') {
// 左括号入栈
cs.push(s[i]);
}
else {
// 右括号必须和栈顶的左括号匹配
// 栈空不匹配
if (cs.empty()) return false;

// 分情况判断是否匹配
switch (cs.top()) {
case '(':
if (s[i] != ')') return false;
break;
case '{':
if (s[i] != '}') return false;
break;
case '[':
if (s[i] != ']') return false;
break;
defalut: return false;
}
cs.pop();
}
}
return cs.empty(); // 栈是否为空?
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode