1

有效括号序列

题目
描述

给出一个仅包含字符’(’, ’)’, ’{’, ’}’, ’[‘和’]’, 的字符串,判断给出的字符串是否是合法的括号序列,括号必须以正确的顺序关闭,"()"和"()[]{}"都是合法的括号序列,但"(]"和"([)]"
不合法。
数据范围:字符串长度 0≤n≤10000
要求:空间复杂度O(n),时间复杂度O(n)

思路
采用进栈出栈的思想,先进后出,后进先出,如果碰到左字符,就进栈,如果遇到右字符,则它对应的左字符就应该出栈。如果没有对应的左字符或者栈为空,就说明输入字符串就是不合法的括号序列。
代码:

class Solution:
    def isValid(self, s: str)->bool:
        map_dict = {"{": "}", "[": "]", "(": ")"}
        stack = []
        for item in s:
            if item in map_dict.keys():
                stack.append(item)
            else:
                if len(stack) == 0 or item != map_dict[stack[-1]]:
                    return False
                else:
                    stack.pop()
        if len(stack) != 0:
            return False
        return True
posted @ 2024-03-14 18:03  Bonne_chance  阅读(12)  评论(0编辑  收藏  举报
1