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(); // 栈是否为空?
}
};