leetcode6 括号匹配

示例 1:

复制代码
输入:s = "()"
输出:true

示例 2:

复制代码
输入:s = "()[]{}"
输出:true

示例 3:

复制代码
输入:s = "(]"
输出:false

法一:最容易想到的是利用堆栈,先检索遇到左括号push;如果不是左括号,先判断是否有左括号(栈非空)否则返回Fals,判断右括号和栈顶元素是否配对,配对就pop,否则就返回Fals;最后返回还要检查栈非空和是否成对

python 复制代码
class Solution:
    def isValid(self, s: str) -> bool:
        length=len(s)
        if length%2 !=0:
            return False
        else:
            s1=[]
            count=0
            for i in range(length):
                if s[i] in "({[":
                    s1.append(s[i])
                else:
                    if not s1:
                        return False
                    if s[i]==")" and s1[-1]=="(":
                        count+=1
                    elif s[i]=="]" and s1[-1]=="[":
                        count+=1
                    elif s[i]=="}" and s1[-1]=="{":
                        count+=1
                    else:
                        return False
                    s1.pop()                
            return not s1 and count==length//2     
相关推荐
richard_yuu34 分钟前
C#零基础通关第六篇:吃透静态、常量与只读,分清静态与实例的本质差异
开发语言·c#
拂拉氏2 小时前
【项目分享-知识讲解】C++标准库string类的模拟实现+KMP算法讲解+哈希思想了解
开发语言·c++·算法·kmp算法·哈希·string类
枫叶丹42 小时前
【HarmonyOS 6.0】Graphics Accelerate Kit:AI超帧能力技术解析与实践
开发语言·人工智能·华为·harmonyos
HelloAldis2 小时前
Java 库 univer-lib:让 Univer Sheets 与 xlsx 无损双向转换
java·开发语言·xlsx·univer
枕星而眠2 小时前
C++ 类与对象核心知识点及面试高频题详解
开发语言·c++·面试
2501_930707787 小时前
使用C#代码在 PowerPoint 中组合或取消组合形状
开发语言·c#
晚烛8 小时前
CANN 调试工具与性能剖析:从日志分析到 NPU 行为追踪的完整调试体系
开发语言·windows·python·深度学习·缓存
惊鸿一博8 小时前
图标加载方式_zeroIcon_是否加前缀mdi
开发语言·前端·javascript
森G8 小时前
TypeScript 基础类型
开发语言·typescript
huipeng9269 小时前
企业级微服务开发实战(一):项目启动与工程化设计
java·开发语言·spring boot·spring cloud·微服务·云原生·架构