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("[]")
所以会导致输出出现错误。
其次存在题目理解错误
补全的括号必须匹配,不能出现例如[(])的不匹配的补全括号。