【LeetCode 20】Valid Parentheses(Python)

Given a string containing just the characters ‘(‘, ‘)’, ‘{‘, ‘}’, ‘[’ and ‘]’, determine if the input string is valid.
The brackets must close in the correct order, “()” and “()[]{}” are all valid but “(]” and “([)]” are not.
题目分析:给定一个字符串包含的字符只能在这些中’(‘, ‘)’, ‘{‘, ‘}’, ‘[’ , ‘]’选择。判断输入的括号是否匹配。例如:[()] ->合法 [(}] ->不合法 ()) ->不合法
方法一:
思路:用数据结构里面的栈去做,最简单,也好懂。
在这里简单介绍一下栈,就是一个空的表,当要往表里添加元素的时候,只能在表的一段进行插入删除(就像一个水杯,只有一个开口,不管你想倒入水还是倒出水,都只能对那一个口操作)
栈的操作主要就是pop() 弹出最后输入的那个元素,append()添加一个元素进栈。栈内是有序排列的(按你插入元素的先后顺序,最先插入的元素就在杯子底,最后插入的元素当然也就摞到了杯子最上边)
代码:(可以成功提交)

class Solution:
    def isValid(self, s):
        """
        :type s: str
        :rtype: bool
        """
        sa=[None]
        a={'}':'{',']':'[',')':'('}
        for i in s:
            if i in a and a[i]==sa[len(sa)-1]:
                sa.pop()
            else:
                sa.append(i)
        return if len(sa)==1
        '''
        这下面的内容是为了将最后测验结果可视化,提交的时候可以不写
        if len(sa)==1:
            print("false")
        else:print("true")
        '''

d=Solution()        #最后这三行是便于自己在编译器里运行进行检查,提交的时候写不写都行
c=d.isValid(['[{}]'])
print(c)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值