面试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
相关推荐
程序员-King.1 天前
day86——有效的字母异位词(LeetCode-242)
算法·字符串
hope_wisdom7 天前
C/C++数据结构之用数组实现栈
c语言·数据结构·c++·数组·
自信的小螺丝钉12 天前
Leetcode 155. 最小栈 辅助栈
leetcode·
Tisfy23 天前
LeetCode 0966.元音拼写检查器:三个哈希表实现
leetcode·字符串·散列表·题解·哈希表
KarrySmile24 天前
HOT100--Day23--153. 寻找旋转排序数组中的最小值,4. 寻找两个正序数组的中位数,20. 有效的括号
二分查找·数组··hot100·二分法·二分搜索·旋转排序数组
1白天的黑夜125 天前
栈-844.比较含退格的字符串-力扣(LeetCode)
c++·leetcode·
1白天的黑夜125 天前
栈-1047.删除字符串中的所有相邻重复项-力扣(LeetCode)
c++·leetcode·
hope_wisdom1 个月前
C/C++数据结构之栈基础
c语言·数据结构·c++··stack
3Cloudream1 个月前
LeetCode 003. 无重复字符的最长子串 - 滑动窗口与哈希表详解
算法·leetcode·字符串·双指针·滑动窗口·哈希表·中等
今后1231 个月前
【数据结构】栈详解
数据结构·