二. 栈2 使括号匹配

2018-04-10  本文已影响0人  何大炮

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
上一篇 下一篇

猜你喜欢

热点阅读