有效的括号

题面

给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。

有效字符串需满足:

  1. 左括号必须用相同类型的右括号闭合。
  2. 左括号必须以正确的顺序闭合。
  3. 每个右括号都有一个对应的相同类型的左括号。

示例 1:

输入: s = "()"

输出: true

示例 2:

输入: s = "()[]"

输出: true

示例 3:

输入: s = "(]"

输出: false

示例 4:

输入: s = "([])"

输出: true

示例 5:

输入: s = "([)]"

输出: false

提示:

  • 1 <= s.length <= 104
  • s 仅由括号 '()[]{}' 组成

分析

  • 很简单的栈的应用

  • 代码实现

    class Solution {
    public:
        bool isValid(string s) {
            std::deque<int> st;
            for (char c : s) {
                if (c == '(')
                    st.push_back(')');
                else if (c == '{')
                    st.push_back('}');
                else if (c == '[')
                    st.push_back(']');
                else if (!st.empty() && c == st.back())
                    st.pop_back();
                else
                    return false;
            }
            std::cout << st.empty();
            return st.empty();
        }
    };
这篇文档有帮助吗?

On this page

页面信息