python-leetcode 68.有效的括号

题目:

给定一个只包括"("')''{''}''['']' 的字符串 s ,判断字符串是否有效。

有效字符串需满足:左括号必须用相同类型的右括号闭合;左括号必须以正确的顺序闭合,每个右括号都有一个对应相同类型的左括号


根据栈这种数据结构。栈的特点是后进后出,即最后放入的元素会被最先取出,这与括号的闭合顺序是吻合的。

具体步骤如下:

1:初始化一个空栈

2:遍历字符串中的每一个字符:

如果遇到左括号,将其压入栈中。

如果遇到右括号,检查栈顶的元素是否是对应的左括号。如果是,弹出栈顶元素,表示括号匹配成功。如果不是,或者栈为空,即没有对应的左括号,则字符串无效

3:遍历结束后,检查栈是否为空:如果栈为空,说明所有括号都正确闭合,字符串有效。如果栈不为空,说明有未闭合的左括号,字符串无效。

python 复制代码
class Solution(object):
    def isValid(self, s):
        """
        :type s: str
        :rtype: bool
        """
        if len(s)%2 !=0:
            return False

        stack=[]
        mapping={")":"(","}":"{","]":"["}
        
        for char in s:
            if char in mapping.values():
                stack.append(char)

            else:
                if not stack or stack.pop()!=mapping[char]:
                    return False
        return not stack

时间复杂度:O(n) n是字符串的长度,每个字符的入栈和出栈操作都是O(1)

KO空间复杂度:O(n)

相关推荐
小O的算法实验室3 小时前
2026年SEVC SCI2区,基于差分向量内学习策略的自适应指数交叉差分进化算法,深度解析+性能实测
算法·论文复现·智能算法·智能算法改进
luoluoal3 小时前
基于python的des算法的企业用户数据安全软件(源码+文档)
python·mysql·毕业设计·源码
Mqh1807623 小时前
day43 图像数据与现存
python
逻极3 小时前
Python MySQL监控与日志配置实战:从“盲人摸象”到“明察秋毫”
python·mysql·监控·日志
gloomyfish3 小时前
【最新技术】多模态零样本工业缺陷检测概述
人工智能·算法·计算机视觉
渡过晚枫3 小时前
[蓝桥杯/java/算法]攻击次数
java·算法·蓝桥杯
风筝在晴天搁浅3 小时前
hot100 3.无重复字符的最长子串
数据结构·算法·leetcode
小嘴叭叭儿3 小时前
5 分钟上手 uv:Python 依赖管理最佳实践
python·程序员
liuyao_xianhui3 小时前
寻找旋转排序数组中的最小值_优选算法(二分算法)
算法
努力学算法的蒟蒻3 小时前
day37(12.18)——leetcode面试经典150
算法·leetcode·面试