思路
使用栈处理
左括号进栈,右括号判断(1. 栈为空,不合法,2. 栈顶元素不是对应的左括号,不合法,3. 栈顶元素是对应的左括号,pop栈顶元素)
最后判断栈是否为空
其实代码还可以优化下,右括号的判断可以只写一个if,写的有点不太优雅。
代码
class Solution {
public:
bool isValid(string s) {
stack<char> a;
int len = s.length();
if (len == 0) {
return true;
}
for (int i=0; i < len; i++) {
char curChar = s[i];
if (curChar == '{' || curChar == '(' || curChar == '[') {
a.push(curChar);
}
if (curChar == '}') {
if (a.empty()) {
return false;
}
char top = a.top();
if (top == '{') {
a.pop();
} else {
return false;
}
}
if (curChar == ')') {
if (a.empty()) {
return false;
}
char top = a.top();
if (top == '(') {
a.pop();
} else {
return false;
}
}
if (curChar == ']') {
if (a.empty()) {
return false;
}
char top = a.top();
if (top == '[') {
a.pop();
} else {
return false;
}
}
}
if (a.empty()) {
return true;
} else {
return false;
}
}
};
本文详细解析了使用栈实现括号匹配的有效性检查算法。通过具体代码示例,阐述了如何处理左括号和右括号,确保字符串中括号的正确配对。最后,通过判断栈是否为空来验证括号序列的合法性。


被折叠的 条评论
为什么被折叠?



