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

leetcode栈与队列(一)-有效的括号

题目

. - 力扣(LeetCode)

给定一个只包括 '('')''{''}''['']' 的字符串 s ,判断字符串是否有效。

有效字符串需满足:

  1. 左括号必须用相同类型的右括号闭合。
  2. 左括号必须以正确的顺序闭合。
  3. 每个右括号都有一个对应的相同类型的左括号。

示例 1:

输入:s = "()"

输出:true

示例 2:

输入:s = "()[]{}"

输出:true

示例 3:

输入:s = "(]"

输出:false

示例 4:

输入:s = "([])"

输出:true

提示:

  • 1 <= s.length <= 104
  • s 仅由括号 '()[]{}' 组成

思路

先建立一个栈stack,用来存取从s中读取的字符串

遍历s中所有的字符串,需要三个分支来对其进行分类:

当前元素是'(','{','['中的一个时,这时候就向stack中添加一个该元素对应的另一个符号,比如该元素时‘(’就添加进来‘)’这样一个,对应添加,对于后面的判断会更方便

当stack是空的时候或者该元素不等于stack的最后一个元素时,就说明无法完成配对,即可返回False结束即可

不满足以上两个条件时,那就说明该元素是')',']','}'中的一个,即弹出stack最后一个元素即可

代码

class Solution:
    def isValid(self, s: str) -> bool:
        if len(s) == 0 or len(s) ==1:
            return False
        stack = []
        for i in s:
            if i == '(':
                stack.append(')')
            elif i == '{':
                stack.append('}')
            elif i == '[':
                stack.append(']')
            elif len(stack)==0 or stack[-1]!=i :
                return False
            else:
                stack.pop()
        if len(stack) == 0:
            return True
        else:
            return False


http://www.kler.cn/a/348807.html

相关文章:

  • 12 项 ECMAScript 提案的最新进展!
  • 使用这款图片二维码生成器,快速将图片生成二维码
  • vue3--通用 popover 气泡卡片组件实现
  • RTSP推流服务搭建
  • sqli-labs less-18 http头user-agent注入
  • leetcode哈希表(二)-两个数组的交集
  • 最全上市公司企业数字创新数据集(2001-2023年)
  • 文件IO练习1
  • 数字后端零基础入门系列 | Innovus零基础LAB学习Day1
  • ansible 流程控制
  • 自然语言处理 (NLP) 的 5 个步骤
  • less和sass基本使用
  • 交易所开发:构建安全、高效、可靠的数字资产交易平台
  • Modbus学习笔记
  • 电脑电源要如何检测?
  • 国内外顶级的产品经理,他们都具备哪些能力?
  • neo4j部署保姆级教程
  • 雷池社区版配置遇到问题不要慌,查看本文解决
  • 天通智能平板|智能移动终端|三防|单兵|平板|智能三防手持终端
  • 在vue3中实现祖组件给后代组件传参,可以跨域几层。