题目描述:

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

有效字符串需满足:

左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 每个右括号都有一个对应的相同类型的左括号。

示例 1:

输入:s = "()"
输出:true
示例 2:

输入:s = "()[]{}"
输出:true
示例 3:

输入:s = "(]"
输出:false

提示:
1 <= s.length <= 104
s 仅由括号 '()[]{}' 组成

思路

使用栈

代码

public boolean isValid(String s) {
    int length = s.length();
    if(length %2 != 0) return false;
    Stack<Character> stack = new Stack<>();
    for(int i=0; i<length; i++){
        Character tmp = s.charAt(i);
        switch (tmp) {
            case '(':
                stack.push(')');
                break;
            case '{':
                stack.push('}');
                break;
            case '[':
                stack.push(']');
                break;
            default:
                if(stack.isEmpty() || tmp != stack.pop()) return false;
                break;
        }
    }
    return stack.size() == 0;
}

运行结果