20. 有效的括号

题目:给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合;左括号必须以正确的顺序闭合;注意空字符串可被认为是有效字符串。
思路:利用栈先进后出的特性,若遇到左括号入栈,遇到右括号时将对应栈顶左括号出栈,则遍历完所有括号后 stack 仍然为空。建立哈希表 dic 构建左右括号对应关系:key为左括号,value 为右括号。
代码
class Solution:
    def isValid(self, s: str) -> bool:
        if len(s)%2==1:
            return False
        stackItem=[]
        stack_l={')':'(',']':'[','}':'{'}
        strlist=list(s)
        for item in strlist:
            if item in stack_l.values():
                stackItem.append(item)
            elif item in stack_l.keys():
                if len(stackItem)==0:
                    return False
                if stack_l[item]==stackItem[-1]:
                    stackItem.pop()
                else:
                    return False
        if len(stackItem)==0:
            return True
        else:
            return False
复杂度分析正确的括号组合需要遍历 1 遍,故时间复杂度O(n);存储哈希表,空间复杂度O(n).
全部评论

相关推荐

牛客83265014...:完了,连现在都没开始面,13号投的是不是晚了
秋招的第一个offer,...
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务