当前位置: 首页 > news >正文

leetcode 20.有效括号

20. 有效的括号 - 力扣(LeetCode)

class Solution:
    def isValid(self, s: str) -> bool:
        stack = []
       
        for  i in s :
            if i  in ('(','{','[' ):
                stack.append(i)
            elif i in (')' ):
                # 这种情况是 栈弹出元素为空时候 ,右半部分的括号多出来一些 比如: [()]} 
                if not stack:
                    return False
                temp=stack.pop()
                if temp !='(':
                    return False 
            elif i in('}'):
                if not stack:
                    return False
                temp=stack.pop()
                if temp !='{':
                    return False 
            elif i in(']'):
                if not stack:
                    return False
                temp=stack.pop()
                if temp !='[':
                    return False 
        if stack:  # 这种情况是,右半部分的括号全部匹配结束后, 栈元素还有剩余( 即左括号多了一部分) 
            return False
        return True       

代码随想录中的 先 强行匹配 做了映射对应关系,  然后再判断映射的右半部分 是不是 符合真实的右侧部分的信息 ,

class Solution:
    def isValid(self, s: str) -> bool:
        stack = []
       
        for  i in s :
            # if i  in ('(','{','[' ):
            #     stack.append(i)
            if i == '(':
                stack.append(')')
            elif i== '[':
                stack.append(']')
            elif i == '{':
                stack.append('}')
            # elif i in (')' ):
            #     # 这种情况是 栈弹出元素为空时候 ,右半部分的括号多出来一些 比如: [()]} 
            #     if not stack:
            #         return False
            #     temp=stack.pop()
            #     if temp !=i:
            #         return False 
            # elif i in('}'):
            #     if not stack:
            #         return False
            #     temp=stack.pop()
            #     if temp !=i:
            #         return False 
            # elif i in(']'):
            #     if not stack:
            #         return False
            #     temp=stack.pop()
            #     if temp !=i:
            #         return False 
            else:
                if not stack:
                    return False
                temp=stack.pop()
                if temp !=i:
                    return False 
        if stack:  # 这种情况是,右半部分的括号全部匹配结束后, 栈元素还有剩余( 即左括号多了一部分) 
            return False
        return True       

相关文章:

  • 网络运维学习笔记(DeepSeek优化版) 023 HCIP-Datacom OSPF邻居建立过程、四种网络类型、OSPF高级配置、LSA类型与管理
  • 企业级部署zabbix分布式监控系统
  • C++数据结构(搜索二叉树)
  • 【SOC 芯片设计 DFT 学习专栏 -- IDDQ 测试 与 Burn-In 测试】
  • 使用CSS3实现炫酷的3D视差滚动效果
  • 综合小实验之电视机
  • <数据集>手势识别数据集<目标检测>
  • fpga pcie
  • javaSE.多维数组
  • 后大模型时代智能体将成为“新宠”
  • 使用go实现导入Rxcel数据到数据库并渲染到页面上
  • java项目之基于ssm的个人博客网站(源码+文档)
  • 【MySQL篇】索引特性,索引的工作原理以及索引的创建与管理
  • Git 使用指南:从设置用户信息到项目提交的全流程教程(持续更新)
  • Electron 项目开机自启动
  • 【netstat和ss】Windows和Linux下的,网络连接排查简单案例
  • 【前端面试题】计算机网络相关
  • ROS2 部署大语言模型节点
  • 【AVRCP】深度解析 AVRCP 定时器机制:从 TRCP/TMTC/TMTP 看蓝牙遥控的实时性保障
  • HAL_TIM_IC_CaptureCallback 函数
  • 半导体网站建设/东莞企业网站排名
  • 企业网站服务费怎么做记账凭证/今日头条新闻
  • 做vr效果图的网站/网站访问量统计工具
  • 遵义城乡建设网站/百度 个人中心首页
  • 做围棋死活题的网站/品牌推广经典案例
  • 做网站分什么/网络推广的基本渠道