leetcode 题号#20 有效的括号

2019-05-19  本文已影响0人  Cloneable

查看题目详情可点击此处

题目

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

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

示例 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;
    }
}
上一篇下一篇

猜你喜欢

热点阅读