原创

20. 有效的括号

温馨提示:
本文最后更新于 2022年12月03日,已超过 887 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我

20. 有效的括号

递归解法:

时间复杂度:O(n)
空间复杂度:O(n)

    class Solution {
        public boolean isValid(String s) {
            // - 初始化一个栈
            Stack<Character> stack = new Stack<>();

            // - 循环字符串的元素
            for (int i = 0; i < s.length(); i++) {
                // - 获取当年循环的元素
                char c = s.charAt(i);
                // - 如果是左括号数据 放入栈中
                if ('(' == c || '[' == c || '{' == c) {
                    stack.push(c);
                } else {
                    // - 如果栈是空的直接返回 false
                    if (stack.isEmpty()) {
                        return false;
                    }
                    //  -如果是右节点 取出栈中 存入的左括号数据
                    Character left = stack.pop();
                    if ('(' == left && ')' != c) {
                        return false;
                    }
                    if ('[' == left && ']' != c) {
                        return false;
                    }

                    if ('{' == left && '}' != c) {
                        return false;
                    }
                }

            }
            // - 判断栈是否为空 ,为空代表是有效括号 否则反之
            return stack.isEmpty();
        }
    }
正文到此结束