面试150 有效的括号

思路

通过栈去模拟,如果是遇到左括号,右括号进栈,如果当前栈一直为空或者当前元素与栈顶元素不相同,则说明不是有效的括号,直接返回False,然后如果当前元素和栈顶元素匹配,则将栈内的元素弹出。最后如果栈为空,说明是有效的括号,反则不是

python 复制代码
class Solution:
    def isValid(self, s: str) -> bool:
        stack=[]
        for i in range(len(s)):
            if s[i]=='(':
                stack.append(')') #右括号进栈
            elif s[i]=='{':
                stack.append('}')
            elif s[i]=='[':
                stack.append(']')
            elif len(stack)==0 or s[i]!=stack[-1]:#短路效应,需要先写前一个,不然可能遇到空栈操作
                return False
            else:
                stack.pop()
        if len(stack)==0:
            return True
        else:
            return False
相关推荐
月夜的风吹雨4 小时前
【C++ STL容器适配器】:解密Stack、Queue与Priority Queue的设计智慧
开发语言·c++·stl·优先级队列··队列·适配器
課代表9 天前
VB.Net 常用函数
字符串·类型转换·数组·函数·vb.net·日期时间·条件
2401_841495649 天前
【数据结构】基于BF算法的树种病毒检测
java·数据结构·c++·python·算法·字符串·模式匹配
不穿格子的程序员10 天前
从零开始写算法-栈-最小值(记忆化pair)
数据结构·
不穿格子的程序员13 天前
从零开始刷算法-栈-括号匹配
java·开发语言·
少许极端14 天前
算法奇妙屋(九)-栈
java·数据结构·算法·
mifengxing16 天前
力扣每日一题——接雨水
c语言·数据结构·算法·leetcode·动态规划·
hope_wisdom22 天前
C/C++数据结构之用链表实现栈
c语言·数据结构·c++·链表·
胡西风_foxww1 个月前
git 添加除了包含特定字符串的文件
git·字符串·文件·add·添加·特定·包含