力扣752. 打开转盘锁

J简文

关注

阅读 25

2024-06-13

在这里插入图片描述
这道题就是栈这种数据结构的应用,当我们遇到左括号的时候,比如{,(,[,就压栈,当遇到右括号的时候,比如},),],就把栈顶元素弹出,如果不匹配,则返回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

在这里插入图片描述

精彩评论(0)

0 0 举报