codeTop100题(15)20. 有效的括号

79 阅读1分钟

1. 题目

20. 有效的括号

2. 分析

这题相信大家在学习栈的数据结构的时候就知道这道题目了,通过左边的括号入栈,右边的括号和栈顶的括号进行匹配。

  • 注意遍历字符串过程中,栈需要判断是否为空
  • 注意遍历完字符串之后,再判断栈不为空说明有多余的括号,不匹配

3. 代码

public boolean isValid(String s) {
    Deque<Character> deque = new ArrayDeque<>();
    for (int i = 0; i < s.length(); i++) {
        if ('(' == s.charAt(i) || '[' == s.charAt(i) || '{' == s.charAt(i)) {
            deque.push(s.charAt(i));
        } else {
            if (deque.isEmpty()) {
                return false;
            }
            char c = deque.pop();
            if (('(' == c && ')' == s.charAt(i)) || ('[' == c && ']' == s.charAt(i)) || ('{' == c && '}' == s.charAt(i))) {
                continue;
            }
            return false;
        }
    }
    return deque.isEmpty();
}