美文网首页
leetcode 题号#20 有效的括号

leetcode 题号#20 有效的括号

作者: Cloneable | 来源:发表于2019-05-19 22:55 被阅读0次

    查看题目详情可点击此处

    题目

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

    有效字符串需满足:
    左括号必须用相同类型的右括号闭合。
    左括号必须以正确的顺序闭合。
    注意空字符串可被认为是有效字符串。

    示例 1:

    输入: "()"
    输出: true

    示例 2:

    输入: "()[]{}"
    输出: true

    示例 3:

    输入: "(]"
    输出: false

    示例 4:

    输入: "([)]"
    输出: false

    示例 5:

    输入: "{[]}"
    输出: true

    解题思路

    这题的解题思路没有什么特别之处,主要还是对栈的基本使用,当为左括号时就入栈,当为右括号时就与栈顶匹配,能够正确匹配就进行出栈操作,如果匹配失败就是失效,当遍历完字符串后栈内元素已经清空表示字符串有效。

    代码实现

    class Solution {
        public boolean isValid(String s) {
            char[] chars = s.toCharArray();
            Stack<Character> stack = new Stack<>();
            for(char c : chars) {
                if('(' == c || '[' == c || '{' == c) {
                    stack.push(c);
                } else if(stack.size() > 0 && ((')' == c && '(' == stack.peek()) ||
                        (']' == c && '[' == stack.peek()) ||
                        ('}' == c && '{' == stack.peek()))) {
                     stack.pop();
                } else {
                    return false;
                }
            }
    
            return stack.size() == 0;
        }
    }
    

    相关文章

      网友评论

          本文标题:leetcode 题号#20 有效的括号

          本文链接:https://www.haomeiwen.com/subject/rpfczqtx.html