Python代码一个测试点都没过,我实在看不出来了。求助

P1241 括号序列

mapgm @ 2021-11-08 20:47:03

a_list = list(input())
demo = {}
t = []
for i in range(len(a_list)):
    if a_list[i] == ')':
        for j in range(i-1,-1,-1):
            if a_list[j] == '(' and j not in demo:
                demo[i] = 1
                demo[j] = 1
                break
    if a_list[i] == ']':
        for j in range(i-1,-1,-1):
            if a_list[j] == '[' and j not in demo:
                demo[i] = 1
                demo[j] = 1
                break
for m in range(len(a_list)):
    if m in demo:
        t.append(a_list[m])
    else:
        if a_list[m] == '(' or a_list[m] == ')':
            t.append("()")
        else:
            t.append("[]")
print(''.join(t))

by mapgm @ 2021-11-08 20:51:56

没写注释,但整体思路还是比较清晰的(自认为 首先循环输入的列表寻找可以匹配的括号,再用一个字典标记已经匹配的括号,然后再次循环列表,如果一个括号被标记,就直接输出,否则就补全再输出。 我自己在vscode里调试的挺好的,基本尝试的测试都成功了,拿到这里就一个都不过,我真的懵了 求助QAQ


by Creator_Jin @ 2022-04-03 23:22:12

好不容易找到一个Python党

Python strip() 方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。

a_list = list(input().strip())

由于后文使用了:

if a_list[m] == '(' or a_list[m] == ')':
    t.append("()")
else:
    t.append("[]")

所以会导致输出出现错误。

其次存在题目理解错误

补全的括号必须匹配,不能出现例如[(])的不匹配的补全括号。


|