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最后一个元素即可

代码

python 复制代码
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
相关推荐
明志数科1 小时前
4D时序标注技术详解:让机器人理解连续动作的数据基础
java·算法·机器人
KaMeidebaby2 小时前
卡梅德生物技术快报|原核表达系统工艺优化:包涵体重折叠 + 分子筛纯化实现功能 RBD 高效制备,附全参数配置
前端·人工智能·算法·数据挖掘·数据分析
无限码力2 小时前
携程0510笔试真题【单数组交换】
算法·携程笔试·携程笔试真题·携程0510笔试真题
BlockWay3 小时前
WEEX Labs 周度观察:微软-OpenAI 合作调整与AI 多云趋势
大数据·人工智能·算法·安全·microsoft
风筝在晴天搁浅3 小时前
快手 CodeTop LeetCode 224.基本计算器
数据结构·算法·leetcode
Smoothcloud润云3 小时前
5大功能精修,重构AI算力使用体验!
java·人工智能·windows·算法·重构·编辑器·sublime text
计算机安禾3 小时前
【算法分析与设计】第41篇:确定性与非确定性多项式时间:P与NP的形式化
算法
浮午4 小时前
字节AI Agent开发面试全解析:15道高频问题+深度答案
人工智能·面试·职场和发展
leo__5204 小时前
随机接入退避算法过程模拟实现
网络·算法
-To be number.wan4 小时前
算法日记 | STL- sort排序
c++·算法