有效的括号

class Solution:
    def isValid(self, s: str) -> bool:
        '''判断是否是有效的括号

        Args:
            str: 包含括号的字符串
        
        Returns:
            返回判断的结果,满足条件:
                1. 左括号必须用相同的类型的右括号闭合。
                2. 左括号必须以正确的顺序闭合。
            空字符串可以被认为是有效的字符串
            返回类型为布尔型
        '''
        # 以栈形式存储左括号
        stack = []

        # 以右括号当成键映射对应类型的左括号
        prths_mapping = {'}': '{', ']': '[', ')': '('}

        # 遍历字符串,遇左括号则进行入栈
        for ch in s:
            # 对字符进行判断,是否为右括号
            if ch in prths_mapping:
                # 为右括号的情况下,判断 stack 栈顶是否是同类型的左括号
                # pop 出栈顶的字符
                # 若 stack 为空,用 '?' 进行标记
                pop_prth = stack.pop() if stack else '?'

                # 如果左右括号不成对,直接返回 False
                if prths_mapping[ch] != pop_prth:
                    return False
            else:  # 左括号入栈
                stack.append(ch)
        # stack 最终为空,则表示为有效
        return not stack


发布了409 篇原创文章 · 获赞 9 · 访问量 5万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 鲸 设计师: meimeiellie

分享到微信朋友圈

×

扫一扫,手机浏览