🌗 20. 有效的括号

吞佛童子2022年6月20日
  • algorithm
  • queue
  • stack
小于 1 分钟

🌗 20. 有效的括号

难度: 🌗

问题描述

img_6.png


解法

class Solution {
    public boolean isValid(String s) {
        // 思路:
        // 借助 栈
        int len = s.length();
        // 特殊情况特判
        if((len & 1) == 1) {
            return false;
        }
        LinkedList<Character> stack = new LinkedList<>();
        HashMap<Character, Character> map = new HashMap<>();
        map.put('[', ']');
        map.put('{', '}');
        map.put('(', ')');
        for(char c : s.toCharArray()) {
            if(stack.isEmpty()) {
                if(c == '(' || c == '{' || c == '[') {
                    stack.push(c);
                } else {
                    return false;
                }
            } else {
                // !stack.isEmpty()
                if(c == '(' || c == '{' || c == '[') {
                    stack.push(c);
                } else {
                    // 进行消除
                    char left = stack.peek();
                    char right = map.get(left);
                    if(right != c) {
                        return false;
                    } else {
                        stack.pop();
                    }
                }
            }
        }
        return stack.isEmpty();
    }
}

输出

img_5.png

上次编辑于: 2022/10/10 下午8:43:48
贡献者: liuxianzhishou