码迷,mamicode.com
首页 > 其他好文 > 详细

有效的括号

时间:2020-02-18 13:26:44      阅读:80      评论:0      收藏:0      [点我收藏+]

标签:else   遍历   lse   false   ret   ==   end   style   字符串   

给定一个只包括 ‘(‘,’)’,’{‘,’}’,’[‘,’]’ 的字符串,判断字符串是否有效。
括号必须以正确的顺序关闭,”()” 和 “()[]{}” 是有效的但是 “(]” 和 “([)]” 不是。

思路:

利用一个列表模拟堆栈进行匹配,遍历字符串,遇见左括号就进行入栈操作,遇见一次右括号就进行一次出栈,并进行一次比较。例如栈内的符号是:({,下一个遍历的字符是},见到右括号则进行一次出栈操作,进行一次比较,比较的是{和}两个符号,是匹配的,则接着遍历下一个位置。利用字典的键值对特性进行比较

代码如下:

class Solution:
    def isValid(self, s):
        if len(s) % 2 == 1:#偶数个符号才是一定匹配的
            return False

        d = {{: }, [: ], (: )}
        stack = []
        for i in s:
            # in stack
            if i in d:
                stack.append(i)
            else:
                if not stack or d[stack.pop()] != i:
                    return False

        return stack ==[]

 

有效的括号

标签:else   遍历   lse   false   ret   ==   end   style   字符串   

原文地址:https://www.cnblogs.com/tsdblogs/p/12325480.html

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