leetcode有效的括号-中等

文章讲述了如何使用Python中的栈数据结构来判断一个字符串表示的括号是否有效,包括处理左括号、右括号的匹配以及特殊情况如只有右括号的情况。通过遍历字符串并操作栈来确定括号配对的正确性。
摘要由CSDN通过智能技术生成

题目描述

在这里插入图片描述

解题思路

不要被事例骗到,没有事例中写的那么简单,其中还包括([ ])这种例子。如果是计算机本专业的同学来说,一眼看出来,需要使用栈的数据结构。在python中需要使用列表进行。如果匹配的是左括号,就将当前符号加入列表,如果是右括号,那么判断符号的类型(大,中,小),进行出栈,如果出队的元素的和当前访问的元素是一对,那么不做处理,如果不是一对,直接返回False即可,等到最后的时候,如果遍历完所有的元素,栈为空,说明所有的元素均符合规则。除此之外,我们还需要考虑的一种情况就是只有右边括号,如果此时栈为空,那么直接return False。

代码实现

class Solution:
    def isValid(self, s: str) -> bool:
        #判断字符的长度,借助列表
        result=[]
        for i in range(0,len(s)):
            if s[i]=="{":
                result.append(s[i])
            elif s[i]=="(":
                result.append(s[i])
            elif s[i]=="[":
                result.append(s[i])
            else:
                if result==[]:
                    return False
                item=result.pop()
                if s[i]=="}":
                    if item!="{":
                        return False
                elif s[i]==")":
                    if item!="(":
                        return False
                elif s[i]=="]":
                    if item!="[":
                        return False
                else:
                    continue

        if result==[]:
            return True
        else:
            return False
        # sum=0
        # for i in range(0,len(s)):
        #     i=i+sum
        #     if i>=len(s):
        #         break

        #     if s[i]=="(":
        #         if i+1>=len(s):
        #             return False
        #         else:
        #             if s[i+1]!=")":
        #                 return False
        #             else:
        #                 sum=sum+1
        #                 continue
        #     elif s[i]=="[":
        #         if i+1>=len(s):
        #             return False
        #         else:
        #             if s[i+1]!="]":
        #                 return False
        #             else:
        #                 sum=sum+1
        #                 continue
        #     elif s[i]=="{":
        #         if i+1>=len(s):
        #             return False
        #         else:
        #             if s[i+1]!="}":
        #                 return False
        #             else:
        #                 sum=sum+1
        #                 continue
        # return True
        
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值