跳转至

20.有效的括号 (Easy)*

题目描述*

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

有效字符串需满足:

  1. 左括号必须用相同类型的右括号闭合。
  2. 左括号必须以正确的顺序闭合。

注意空字符串可被认为是有效字符串。

实例*

输入: "([)]"

输出: false

输入: "{[]}"

输出: true

代码*

栈的经典题目。

class Solution {
public:
    bool isValid(string s) {
        if(s.length() == 0) {
            return true;
        }
        if(s.length() % 2) {
            return false;
        }
        stack<char> bracket;
        char l;
        for(auto c : s) {
            if(c == '}' || c == ')' || c == ']') {
                if(bracket.empty()) {
                    return false;
                }else {
                    l = bracket.top();
                    bracket.pop();
                }
                if(c == '}' && l != '{' || c == ')' && l != '(' || c == ']' && l != '[') {
                    return false;
                }
            }else {
                bracket.push(c);
            }
        }
        return bracket.empty();
    }
};

最后更新: July 23, 2022