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     
相关推荐
知识分享小能手11 分钟前
R语言入门学习教程,从入门到精通,R语言局部整体型数据可视化(10)
学习·信息可视化·r语言
算法与双吉汉堡13 分钟前
【Nanobot项目笔记】项目架构
python·ai·agent·智能体
@insist12314 分钟前
信息安全工程师-物理隔离技术基础核心考点解析
开发语言·网络·安全·软考·信息安全工程师·软件水平考试
空中海19 分钟前
02 状态、Hooks、副作用与数据流
开发语言·javascript·ecmascript
Aurorar0rua21 分钟前
CS50 x 2024 Notes C - 09
c语言·开发语言·学习方法
兔小盈23 分钟前
多线程篇-(二)线程创建、中断与终止
java·开发语言·多线程
knight_9___32 分钟前
LLM工具调用面试篇6
人工智能·python·面试·职场和发展·llm·agent
用户39626910600333 分钟前
asyncio + subprocess:Python异步调用外部命令踩坑实录
python
hoiii18733 分钟前
基于MATLAB实现内点法解决凸优化问题
开发语言·matlab
AI砖家1 小时前
Claude Code Superpowers 安装使用指南:让 AI 编程从“业余”走向“工程化”
前端·人工智能·python·ai编程·代码规范