面试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
相关推荐
Tisfy15 小时前
LeetCode 0966.元音拼写检查器:三个哈希表实现
leetcode·字符串·散列表·题解·哈希表
KarrySmile2 天前
HOT100--Day23--153. 寻找旋转排序数组中的最小值,4. 寻找两个正序数组的中位数,20. 有效的括号
二分查找·数组··hot100·二分法·二分搜索·旋转排序数组
1白天的黑夜12 天前
栈-844.比较含退格的字符串-力扣(LeetCode)
c++·leetcode·
1白天的黑夜13 天前
栈-1047.删除字符串中的所有相邻重复项-力扣(LeetCode)
c++·leetcode·
hope_wisdom4 天前
C/C++数据结构之栈基础
c语言·数据结构·c++··stack
3Cloudream5 天前
LeetCode 003. 无重复字符的最长子串 - 滑动窗口与哈希表详解
算法·leetcode·字符串·双指针·滑动窗口·哈希表·中等
今后1235 天前
【数据结构】栈详解
数据结构·
南莺莺9 天前
假设一个算术表达式中包含圆括号、方括号和花括号3种类型的括号,编写一个算法来判别,表达式中的括号是否配对,以字符“\0“作为算术表达式的结束符
c语言·数据结构·算法·
oscar99911 天前
少儿编程C++快速教程之——2. 字符串处理
开发语言·c++·c#·字符串·少儿
胡萝卜3.013 天前
【LeetCode&数据结构】栈和队列的应用
数据结构·学习·算法··队列·栈和队列oj题