🧩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 · 栈