0
点赞
收藏
分享

微信扫一扫

力扣752. 打开转盘锁

J简文 2024-06-13 阅读 25

在这里插入图片描述
这道题就是栈这种数据结构的应用,当我们遇到左括号的时候,比如{,(,[,就压栈,当遇到右括号的时候,比如},),],就把栈顶元素弹出,如果不匹配,则返回False,当遍历完所有元素后,栈中仍然有元素,则证明不匹配,也返回False,注意到有效字符串的长度一定为偶数,因此如果字符串的长度为奇数,我们可以直接返回 False,省去后续的遍历判断过程

class Solution(object):
    def isValid(self, s):
        """
        :type s: str
        :rtype: bool
        """
        
        if len(s) % 2 == 1:
            return False
       
        stack = []
        for kh in s:
            if kh in {'{', '(', '['}:
                stack.append(kh)
            if kh in {'}', ')', ']'}:
                if len(stack) < 1:
                    return False
                p = stack.pop()
                if kh == '}' and p != '{':
                    return False
                if kh == ')' and p != '(':
                    return False
                if kh == ']' and p != '[':
                    return False
        if len(stack) != 0:
            return False
        return True

在这里插入图片描述

举报

相关推荐

作文以记之 ~ 打开转盘锁

力扣 1

力扣645

力扣11.5

力扣9.2

力扣123

力扣-2831

力扣10.6

0 条评论