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

Reverse Parentheses算法第10测试用例持续失败求助

括号反转功能测试用例失败的排查思路

问题说明

我正在实现括号反转功能,自己写了基于栈的Python代码(如下),还试过LeetCode上的递归与栈实现、StackOverFlow及论坛里的多种算法方案,但第10个测试用例始终执行失败。目前已经查到有类似问题记录,怀疑是测试用例本身存在问题,想求一些解决思路。

我的代码实现

def reverse_parentheses(s):
    """
    Reverse the strings contained in each pair of matching parentheses,
    starting from the innermost pair. The results string should not contain
    any parentheses.

    >>> reverse_parentheses('a(bc)de')
    'acbde'

    >>> reverse_parentheses(
    ...     'The ((quick (brown) (fox) jumps over the lazy) dog)'
    ... )
    'The god quick nworb xof jumps over the lazy'
    """
    chars = list(s)
    open_bracket_indexes = []
    for i, c in enumerate(chars):
        if c == '(':
            open_bracket_indexes.append(i)
        elif c == ')':
            j = open_bracket_indexes.pop()
            chars[j:i] = chars[i:j:-1]
    if open_bracket_indexes:
        raise ArgumentError('Unclosed parenthesis')
    print(''.join(c for c in chars if c not in '()'))
s = input()
reverse_parentheses(s)

可行的排查方向

  • 先拿到第10个测试用例的具体输入:别直接断定是测试用例的问题,先搞到这个测试用例的输入内容,手动计算正确输出,再对比你的代码、其他可靠算法的输出。如果多个正确算法的结果一致,但和测试用例的预期不符,那大概率是测试用例写错了。
  • 检查代码细节漏洞:你代码里的反转逻辑chars[j:i] = chars[i:j:-1],切片i:j:-1是从i的前一位倒序取到j的后一位,在多层嵌套括号、连续括号这类场景下,会不会出现反转范围错误?比如漏转了部分字符或者多转了?
  • 修正异常处理的错误:Python里没有ArgumentError这个内置异常类,应该用ValueError替代。如果第10个测试用例刚好包含未闭合的括号,你的代码会抛出未定义的异常,直接导致执行失败,这是代码本身的问题。
  • 和通过所有测试的实现逐行对比:找LeetCode上能全过的栈实现代码,跟你的代码逐行对比,比如人家的栈存储的是索引还是字符,反转的时机和范围怎么处理的,很容易找到逻辑差异。
  • 打印中间过程定位问题:在代码里添加打印语句,每次处理括号时,输出当前的chars列表、栈内的索引情况,跑第10个测试用例时,就能看到哪一步的结果不符合预期,快速定位问题点。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 06:47:10