反向括号

Reverse Parentheses

提问人:ASD 提问时间:11/12/2023 最后编辑:ASD 更新时间:11/12/2023 访问量:131

问:

我正在做反括号

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)

description1

描述1 What to do

description2

描述2 What to do

result

结果,第 10 次测试总是失败

我用了很多算法,它们总是在 10 号失败。 前段时间也有同样的问题: StackOverFlow:似乎是一回事,但在 10th LeetCode 上没有任何工作源代码和许多其他代码

使用代码:

网络论坛

leetcode-recursion_based_and_stack_solution, (从字面上看,其他 leetcode 解决方案与以前一样)

90%的原因是“糟糕”的测试,写得不好,只要这个“问题”存在,下面就有这个问题的链接和答案

Python 算法

评论

0赞 Mike 'Pomax' Kamermans 11/12/2023
您使用了哪些“失败”的算法?因为一个“愚蠢的”DFA 在任何时候看到并退出该上下文时都会启动“相对于我们现在正在做的事情相反”的上下文,这将在第一时间得到正确的结果。()
0赞 ASD 11/12/2023
我应该把它们都放在这里吗?还是只是链接到它们?
2赞 Mike 'Pomax' Kamermans 11/12/2023
你应该在你的帖子中谈论它们。点击编辑按钮,然后写下您尝试了哪些算法以及它们的结果的解释。
1赞 Mark 11/12/2023
我不知道我们需要每一次失败的尝试@Mike'Pomax'Kamermans。他们发布的代码看起来很合理,但由于某种原因而失败。这对我来说似乎已经足够了。首先,我找不到已发布代码的失败测试用例。我看不出更多未通过相同测试的代码如何贡献。
1赞 Mark 11/12/2023
这对 @Mike'Pomax'Kamermans 来说是公平的,尤其是因为代码似乎传递了 leetcode。不知道他们指的是第 10 次测试在哪里。

答:

1赞 Andrej Kesely 11/12/2023 #1

这是使用的解决方案(我在链接的解决方案中没有看到它)。我已经在 leetcode 上进行了测试,它通过了所有测试:re

import re

s = "The ((quick (brown) (fox) jumps over the lazy) dog)"

while True:
    new_s = re.sub(r"\(([^)(]*)\)", lambda g: g.group(1)[::-1], s)
    if new_s == s:
        break
    s = new_s

print(s)

指纹:

The god quick nworb xof jumps over the lazy

enter image description here

评论

0赞 ASD 11/12/2023
第 10 次测试仍然失败
2赞 Andrej Kesely 11/12/2023
@ASD 好吧,那么我会质疑测试 - 如果 leetcode 接受它而此页面不接受,则有问题(也许他们提供了错误的输入(?我在代码中没有看到错误(如果输入有效)。
0赞 ASD 11/12/2023
是的,如果仍然什么都没有,也许是里面的问题
0赞 Yuri Ginsburg 11/12/2023
@ASD 第 10 次测试是什么意思?Leetcode 仅提供 4 个针对此问题的测试。
0赞 ASD 11/12/2023
我在 official.contest.yandex.ru 上做,那个测试是由我们教育部开发的,他们选择了这个平台