20. 有效的括号

题目:https://leetcode-cn.com/problems/valid-parentheses/

代码:

class Solution {

    public boolean isValid(String s) {
        Stack<Character> stack = new Stack<>();
        for (int i = 0; i < s.length(); i++) {
            Character c = s.charAt(i);
            if (stack.isEmpty() || !isMatch(stack.peek(), c)) {
                stack.push(c);
            } else {
                stack.pop();
            }
        }
        return stack.isEmpty();
    }

    private boolean isMatch(Character c1, Character c2) {
        if (c1 == null || c2 == null) {
            return false;
        }
        return c1.equals('(') && c2.equals(')')
                || c1.equals('[') && c2.equals(']')
                || c1.equals('{') && c2.equals('}')
                ;
    }

}

挺简单的一道题目,主要解题思路就是使用栈,遍历字符串,当栈为空或者栈顶字符跟现有字符无法匹配时入栈,否则出栈。最后判断栈是否为空即可。

注意点 :
1、需要自己实现是否匹配的方法isMatch,也不难,就是判断条件而已。
2、isMatch(stack.peek(), c)这里的两个参数顺序不能写反了,因为[]这种情况是匹配的,而][这种情况是不匹配的。


觉得内容还不错?打赏个钢镚鼓励鼓励!!👍