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     
相关推荐
java1234_小锋8 分钟前
什么是Java三高架构?
java·开发语言·架构
如竟没有火炬18 分钟前
全排列——交换的思想
开发语言·数据结构·python·算法·leetcode·深度优先
浮游本尊27 分钟前
React 18.x 学习计划 - 第五天:React状态管理
前端·学习·react.js
嵌入式小李.man31 分钟前
C++第十三篇:继承
开发语言·c++
寂静山林31 分钟前
UVa 12526 Cellphone Typing
算法
机器瓦力35 分钟前
Trae使用:重构一个项目
python·ai编程
Bryce李小白37 分钟前
Kotlin Flow 的使用
android·开发语言·kotlin
baole9631 小时前
YOLOv4简单基础学习
学习·yolo·目标跟踪
jarreyer1 小时前
python离线包安装方法总结
开发语言·python