面试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
相关推荐
闻缺陷则喜何志丹2 天前
【回文 字符串】3677 统计二进制回文数字的数目|2223
c++·算法·字符串·力扣·回文
Tisfy3 天前
LeetCode 0712.两个字符串的最小ASCII删除和:反向思维保留最大(动态规划)
算法·leetcode·动态规划·字符串·dp·子序列
无尽的罚坐人生8 天前
hot 100 42. 接雨水
数据结构·算法·leetcode·动态规划··双指针
漫随流水10 天前
leetcode算法(150.逆波兰表达式求值)
数据结构·算法·leetcode·
漫随流水10 天前
leetcode算法(1047.删除字符串中的所有相邻重复项)
算法·leetcode·
Q741_14710 天前
C++ 栈 模拟 力扣 946. 验证栈序列 每日一题 题解
c++·算法·leetcode·模拟·
长安er15 天前
LeetCode 20/155/394/739/84/42/单调栈核心原理与经典题型全解析
数据结构·算法·leetcode·动态规划·
2401_8414956415 天前
【Python高级编程】Python中常见的运算符、函数与方法总结
字符串·集合·文件·列表·元组·字典·运算符
2401_8414956415 天前
【Python高级编程】Python 核心语法速查演示
python·字符串·集合·列表·元组·字典·运算符
Espresso Macchiato16 天前
Leetcode 3781. Maximum Score After Binary Swaps
·leetcode medium·leetcode3781·leetcode双周赛172