Idea:
这道题让我想起了那道最基础的括号匹配问题,此题实际上就是在问,是否能够找到一次位置交换,使得整个string是一个合法的括号匹配。
def bracket(string):
stack = []
position_1 = []
length = len(string)
i = 0
while i < length:
# 每一个括号的位置来源
position_1.append(i+1)
# 将括号加入栈
stack.append(string[0])
# 在原string里去除被加入栈的括号
string = string[1:]
# 表示又处理了一个括号
i += 1
value = True
while value and string:
if stack[-1] == "(" and string[0] == ")":
# 在原string里去除被加入已匹配的括号
string = string[1:]
# 该括号出栈
stack.pop()
# 对应位置出栈
position_1.pop()
# 表示又处理了一个括号
i += 1
if not stack or not string:
value = False
else:
value = False
if len(position_1) ==2 and stack[0] != stack[1]:
return True
else:
return False