You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java使用单栈与switch语句实现括号字符串校验的问题咨询

问题答疑

switch的default分支确实会捕获空格字符,你的代码无法正常运行是核心逻辑和分支处理有两处错误:

  1. matching方法的default分支直接抛出异常,所有非右括号的字符(包括三种左括号、空格)都会触发异常终止程序,根本无法完成正常校验
  2. 整体校验逻辑顺序错误,你没有区分左括号、右括号、无关字符的处理规则,所有字符都先调用matching方法做匹配,不符合括号校验的逻辑要求

修正方案

方案1:仅保留一个switch语句实现(符合你要求的最简写法)

out.println(checkParentheses("({} [()] ({}))"));  // 输出true
out.println(!checkParentheses("({} [() ({)})"));  // 输出true(原字符串非法,取反后为true)

Boolean checkParentheses(String brackets) {
    Deque<Character> stack = new ArrayDeque<>();
    for (char ch : brackets.toCharArray()) {
        switch (ch) {
            // 左括号直接压栈
            case '(':
            case '[':
            case '{':
                stack.push(ch);
                break;
            // 右括号做匹配校验
            case ')':
                if (stack.isEmpty() || stack.pop() != '(') return false;
                break;
            case ']':
                if (stack.isEmpty() || stack.pop() != '[') return false;
                break;
            case '}':
                if (stack.isEmpty() || stack.pop() != '{') return false;
                break;
            // 空格等其他无关字符直接跳过
            default:
                break;
        }
    }
    return stack.isEmpty();
}

方案2:保留独立matching方法的写法

如果你需要把匹配逻辑单独抽离,调整调用顺序即可:

Boolean checkParentheses(String brackets) {
    Deque<Character> stack = new ArrayDeque<>();
    for (char ch : brackets.toCharArray()) {
        // 只有右括号才需要调用匹配方法
        if (ch == ')' || ch == ']' || ch == '}') {
            if (stack.isEmpty() || stack.pop() != matching(ch)) return false;
        } else if (ch == '(' || ch == '[' || ch == '{') {
            stack.push(ch);
        }
        // 空格等其他字符直接跳过,不需要处理
    }
    return stack.isEmpty();
}

char matching(char ch) {
    switch (ch) {
        case ')': return '(';
        case ']': return '[';
        case '}': return '{';
        default: throw new IllegalArgumentException("非法右括号字符");
    }
}

内容的提问来源于stack exchange,提问作者Muguwaranojar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.09 02:54:03