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

  • 相关阅读:
    Windows 系统变量大全
    linux编程
    CSS 对齐操作
    php 和 表单 简单交互
    HTML <input> placeholder 属性
    HTML <label> 标签
    Chap-4 Section 4.4 C++相关问题
    Chap-4 Section 4.3 COMMON块
    Chap-4 Section 4.2.4 指令修正方式
    Chap-4 Section 4.2.3 符号解析
  • 原文地址:https://www.cnblogs.com/hly97/p/13245806.html
Copyright © 2011-2022 走看看