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

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

    有效字符串需满足:

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

    示例 1:

    输入: "()"
    输出: true
    示例 2:

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

    输入: "(]"
    输出: false
    示例 4:

    输入: "([)]"
    输出: false
    示例 5:

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

     1 class Solution:
     2     def isValid(self, s: str) -> bool:
     3         dic={'(':')','[':']','{':'}','?':'?'}
     4         stack=['?']
     5         for i in s:
     6             if i in dic:
     7                 stack.append(i)
     8             elif dic[stack.pop()]!=i:  #出栈的pop返回值对应字典键,需要判断条件,所以不能用else
     9                 return False
    10         return len(stack)==1

    解题思路:

      算法原理:栈先入后出特点恰好与本题括号排序特点一致,遇到左括号入栈,遇到右括号将对应栈顶左括号出栈。

    栈stack不能为空,要不然stack.pop()报错,需要给stack赋初值

  • 相关阅读:
    Xaml下
    Xmal
    ItemTemplate
    spring aop
    Struts2
    jsp的标签库
    数据库连接池
    request初探
    kubectl 命令大全
    win10常见问题归总
  • 原文地址:https://www.cnblogs.com/hly97/p/13245806.html
Copyright © 2011-2022 走看看