有效括号-栈

1、栈,LIFO-后进先出数据结构。

/**
     * 给定一个只包括 '(',')','{','}','[',']'的字符串 s ,判断字符串是否有效。
     * 有效字符串需满足:
     * 左括号必须用相同类型的右括号闭合。
     * 左括号必须以正确的顺序闭合。
     * 
     * 示例 1:
     * 输入:s = "()"
     * 输出:true
     * 
     * 输入:s = "(]"
     * 输出:false
     * 
     * 提示:
     * 1 <= s.length <= 104
     * s 仅由括号 '()[]{}' 组成
     */
    public static boolean isValid(String s) {
        if (s == null || s.equals("")) {
            return false;
        }
        char[] sign = s.toCharArray();
        Stack<Character> stack = new Stack<>();
        for (char item : sign) {
            switch (item) {
                case ')':
                    if (!stack.empty() && '(' == stack.peek()) { //peek() 只返回栈顶元素,不删除
                        stack.pop(); //pop() 返回栈顶元素,并删除
                    } else {
                        return false;
                    }
                    break;
                case ']':
                    if (!stack.empty() && '[' == stack.peek()) {
                        stack.pop();
                    } else {
                        return false;
                    }
                    break;
                case '}':
                    if (!stack.empty() && '{' == stack.peek()) {
                        stack.pop();
                    } else {
                        return false;
                    }
                    break;
                default:
                    stack.push(item); //往栈顶放元素
                    break;
            }
        }
        if (stack.size() > 0) {
            return false;
        }
        return true;
    }

  

上一篇:【力扣学习计划】包含min函数的栈


下一篇:栈与队列相关题目