20. 有效的括号

*爱你&永不变心* 提交于 2020-01-20 00:42:42

20. 有效的括号

难度:

简单

描述:

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

有效字符串需满足:

  1. 左括号必须用相同类型的右括号闭合。

  2. 左括号必须以正确的顺序闭合。

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

说明:

假设我们的环境只能存储 32 位大小的有符号整数,那么其数值范围为 [−231, 231 − 1]。如果数值超过这个范围,请返回 INT_MAX (231 − 1) 或 INT_MIN (−231) 。

示例1:

输入: "()"
输出: true

示例2:

输入: "()[]{}"
输出: true

示例3:

输入: "(]"
输出: false

示例4:

输入: "([)]"
输出: false

示例5:

输入: "{[]}"
输出: true

代码实现:

class Solution {
    public boolean isValid(String s) {

        char[] bracketsArr = s.toCharArray();

        Stack<Character> assist = new Stack<>();

        for (char brackets : bracketsArr) {
            if (brackets == '(' || brackets == '[' || brackets == '{') {
                assist.push(brackets);
            } else {
                if (assist.isEmpty()) {
                    return false;
                }

                boolean isParenthesisMatch = assist.peek() == '(' && brackets == ')';
                boolean isSquareBracketsMatch = assist.peek() == '[' && brackets == ']';
                boolean isBracesMatch = assist.peek() == '{' && brackets == '}';
                if (isParenthesisMatch || isSquareBracketsMatch || isBracesMatch) {
                    assist.pop();
                } else {
                    return false;
                }
            }
        }

        return assist.isEmpty();
    }
}
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!