码迷,mamicode.com
首页 > 编程语言 > 详细

算法之堆栈

时间:2020-05-19 14:29:48      阅读:46      评论:0      收藏:0      [点我收藏+]

标签:一个   class   false   else   匹配   style   def   val   字符   

# 判断一个字符串中的有效括号()[]{}是否有效
def is_invalid(s):
    stack = []
    for i in s:
        # 遇到左括号,则添加到堆栈中
        if i == ( or i == [ or i == {:
            stack.append(i)
        else:
            # 遇到右括号, 先判断堆栈中是否有值, 如果没有,说明多了一个右括号, 直接返回False
            if len(stack) == 0:
                return False
            # 判断右括号与堆栈中的栈顶元素是否匹配,匹配则pop,否则返回False
            if (i == ) and stack[-1] == ( ) or (i == ] and stack[-1] == [) or (i == } and stack[-1] == {):
                stack.pop()
            else:
                return False
    return len(stack) == 0


if __name__ == __main__:
    print(is_invalid(1{}()[]))
    print(is_invalid({}()[]))

 

算法之堆栈

标签:一个   class   false   else   匹配   style   def   val   字符   

原文地址:https://www.cnblogs.com/yaoqingzhuan/p/12916340.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!