zoukankan      html  css  js  c++  java
  • Leetcode 20:有效的括号

    Leetcode 20:有效的括号

    题目

    给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。有效字符串需满足:

    • 左括号必须用相同类型的右括号闭合。
    • 左括号必须以正确的顺序闭合。
      注意空字符串可被认为是有效字符串。

    示例 1:

    输入: "()"
    输出: true
    

    示例 2:

    输入: "()[]{}"
    输出: true
    

    示例 3:

    输入: "(]"
    输出: false
    

    示例 4:

    输入: "([)]"
    输出: false
    

    示例 5:

    输入: "{[]}"
    输出: true
    
    

    思路

    这是一道使用stack这种结构的典型例题。我们可以先建立这样一个map

    {'{':'}', '[':']', '(':')'}
    
    

    然后我们对输入的字符串入栈操作(如果入栈的元素是key的话)

    ()[]{}
    stack: (
    map['(']=')'
    

    依次比较直到出现不匹配或者所有元素都比较结束。这里我们还要注意这样的问题

    ()[]{}(
    

    这个时候直到string的末尾,我们的stack种还有一个元素(。所以我们最后还要判断一下len(stack)==0。

    答案

    class Solution:
        def isValid(self, s):
            """
            :type s: str
            :rtype: bool
            """
            stack = list()
            match = {'{':'}', '[':']', '(':')'}
            for i in s:
                if i == '{' or i == '(' or i == '[':
                    stack.append(i)
                else:
                    if len(stack) == 0:
                        return False
    
                    top = stack.pop()
                    
                    if match[top] != i:
                        return False
    
            if len(stack) != 0:
                return False
            return True
    
    
  • 相关阅读:
    微信机器人-定制消息
    Python实现微信祝福语自动发送
    日常使用 ADB 命令
    python 中的三种等待方式
    Appium自动化测试之环境安装
    Charles 模拟弱网
    Navicat连接MySQL报错-2059
    requests高级用法
    requests基本用法
    Monkey测试环境搭建
  • 原文地址:https://www.cnblogs.com/dailyprogrammer/p/12241625.html
Copyright © 2011-2022 走看看