🧩Algo 栈
20. 有效的括号
难度:🟢 Easy | 标签:栈、字符串 | 状态:⬜ LeetCode 链接
思路
左括号压栈;右括号弹栈比对。 最后栈必须为空。
代码
class Solution {
public:
bool isValid(string s) {
stack<char> st;
for (char c : s) {
if (c == '(' || c == '[' || c == '{') st.push(c);
else {
if (st.empty()) return false;
char t = st.top();
if ((c == ')' && t != '(') ||
(c == ']' && t != '[') ||
(c == '}' && t != '{')) return false;
st.pop();
}
}
return st.empty();
}
};
复杂度
- 时间 O(n),空间 O(n)
易错 / 回顾
- 弹栈前判空
- 最后判栈空(防止只压不弹)
- 也可压入「对应右括号」,遇右括号直接
top == c判等,更紧凑
Related · 栈