面试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
相关推荐
wabs66616 小时前
关于栈【力扣150.逆波兰表达式求值的思考】
数据结构·c++·算法·leetcode··代码随想录
wabs6662 天前
关于栈【力扣1047. 删除字符串中的所有相邻重复项的思考】
数据结构·c++·算法·leetcode··代码随想录
神威难绷泪6 天前
数据结构:循环队列 栈
数据结构··循环队列·链式栈
Tisfy8 天前
LeetCode 3090.每个字符最多出现两次的最长子字符串:二重循环 / 滑动窗口
算法·leetcode·字符串·题解·模拟·双指针·滑动窗口
wabs6668 天前
关于字符串【力扣541.反转字符串II的思考】
数据结构·算法·leetcode·字符串
键盘会跳舞16 天前
C++ :容器适配器stack源码级拆解
开发语言·c++··stack·先进后出
tianyu23418 天前
MySQL字符串处理函数完全指南:从入门到实战
mysql·字符串·函数·截取
hansang_IR22 天前
【题解】LC:Z 算法(Z Algorithm)
c++·算法·字符串
Tisfy1 个月前
LeetCode 3014.输入单词需要的最少按键次数 I:遍历 / if-else计算(比纯数学公式写起来麻烦但好想)
数学·算法·leetcode·字符串·题解·贪心
Tisfy1 个月前
LeetCode 3517.最小回文排列 I:排序(Python两行版) / 计数(O(n)时间+O(C)空间+字符串原地修改)
c语言·python·leetcode·字符串·排序·计数排序·回文