判断括号的合法性

简单版:
def judge(string):
    left = 0
    for i in string:
        if i == '(':
            left += 1
        else:
            left -= 1
        if left <0:    
            return False
    return left == 0

复杂版:
def judge(sentence):
    stack = Stack()
    # 把后括号映射成前括号
    dict = {'}':'{', ']':'[', ')':'('}
    for i in sentence:
                # 左括号全部放进栈里
        if i == '[' or i == '{' or i == '(':
                stack.push(i)

        elif i == ']' or i == '}' or i == ')':
                #遍历到右括号时,发现栈是空的,没有左括号
                if stack.is_empty():
                        return False

                #遍历到右括号时,和栈里取出来的数据对不上
                elif stack.pop() != dict[i]:
                        return False

        #遍历完表达式后,要再次判断一下栈是否排空了
    return stack.is_empty()
posted @ 2019-12-17 11:22  日拱一卒&#128293;  阅读(132)  评论(0编辑  收藏  举报