[String]20. Valid Parentheses

Given a string s containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid.

An input string is valid if:

Open brackets must be closed by the same type of brackets.

Open brackets must be closed in the correct order.


class Solution {

    public boolean isValid(String s) {

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

        Map<Character, Character> map = new HashMap<Character, Character>() {

            {

                put('}', '{');

                put(']', '[');

                put(')', '(');

            }

        };

        for (Character c : s.toCharArray()) {              // 顺序读取字符

            if (!stack.isEmpty() && map.containsKey(c)) {  // 是右括号 && 栈不为空

                if (stack.peek() == map.get(c)) {              // 取其对应的左括号直接和栈顶比

                    stack.pop();                                // 相同则抵消,出栈

                } else {       

                    return false;                              // 不同则直接返回

                }

            } else {                               

                stack.push(c);                              // 左括号,直接入栈

            }

        }

        return stack.isEmpty();                            // 看左右是否抵消完

    }

}


class Solution {

    public boolean isValid(String s) {

        while (s.contains("[]") || s.contains("{}") || s.contains("()")){

            s = s.replace("[]","");

            s = s.replace("()","");

            s = s.replace("{}","");

        }

        return s == "";

    }

}

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容