面试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
相关推荐
Java技术实战6 天前
一文通解:数据结构之 栈
java·jvm·数据结构·
Dlrb12118 天前
ARM指令集---汇编指令集的学习与应用:C程序与汇编的相互调用,处理器工作模式的改变等
汇编·arm开发·arm··arm指令集·汇编指令
布朗克16810 天前
Go 入门到精通-16-字符串深入
开发语言·后端·golang·字符串
鱼子星_10 天前
【C++】string(上):string的基本使用
c++·笔记·字符串
csdn_aspnet20 天前
C# 提取、截取或匹配字符串内包含指定字符的一些方法分享
c#·字符串·正则·分割·提取·匹配
csdn_aspnet20 天前
C# 截取或匹配字符串内包含指定字符的一些方法
c#·字符串·分割·string·匹配·截取
csdn_aspnet21 天前
C# 截取或匹配字符串内包含指定字符
c#·字符串·正则·string·匹配·截取
Tisfy23 天前
LeetCode 1358.包含所有三种字符的子字符串数目:滑动窗口(两种写法直接推荐方法二)
算法·leetcode·字符串·题解·滑动窗口
玖玥拾1 个月前
C/C++ 数据结构(七)栈、容器适配器
c语言·数据结构·c++··容器适配器
Tisfy1 个月前
LeetCode 3838.带权单词映射:求和、取模、拼接(附python一行版)
python·算法·leetcode·字符串·题解·模拟·取模