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赋初值

  • 相关阅读:

    bzoj3052: [wc2013]糖果公园
    莫队算法心得
    bzoj1104: [POI2007]洪水pow
    bzoj1102: [POI2007]山峰和山谷Grz
    bzoj1121: [POI2008]激光发射器SZK
    bzoj1113: [Poi2008]海报PLA
    bzoj1103: [POI2007]大都市meg
    bzoj1396: 识别子串
    bzoj3756: Pty的字符串
  • 原文地址:https://www.cnblogs.com/hly97/p/13245806.html
Copyright © 2011-2022 走看看