【leetcode20】有效的括号

一.问题描述

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

有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。

示例 1:
输入:s = “()”
输出:true

二.示例代码

 private static final Map<Character, Character> map = new HashMap<Character, Character>() {
     {
     
        put('{', '}');
        put('[', ']');
        put('(', ')');
    }};

    public static void main(String[] args) {
     
        String s = "()[]{}{}";
        Boolean result = validBrackets(s);
        System.out.println(result);
    }

    private static Boolean validBrackets(String str) {
     
        if (StringUtils.isEmpty(str)) {
     
            return false;
        }
        Stack<Character> stack = new Stack<>();
        for (int i = 0; i < str.length(); i++) {
     
            char c = str.charAt(i);
            if (map.containsKey(c)) {
     
                stack.push(c);
            }
            if (map.containsValue(c)) {
     
                if (stack.empty()) {
     
                    return false;
                }
                if (!map.get(stack.pop()).equals(c)) {
     
                    return false;
                }
            }
        }
        if (!stack.empty()) {
     
            return false;
        }
        return true;
    }

你可能感兴趣的:(leetcode-easy,leetcode,算法)