• LeetCode 20 _ 有效的括号


    1. 题目描述

     

    2. 代码

     1 class Solution:
     2     def isValid(self, s: str) -> bool:
     3         n = len(s)#获取字符串的长度
     4         if n == 0:#如果长度为0,则表示空串,本题认为是合法的串
     5             return True
     6         if n % 2 == 1:#如果是奇数个括号,则必然不合法
     7             return False
     8         stack = []#定义一个列表用来模拟栈
     9         for c in s:#循环字符串中的每个字符
    10             if c == '(' or c == '{' or c == '[':#如果是左括号
    11                 stack.append(c)#直接入栈
    12             elif c == ')':#如果是右括号
    13                 if len(stack) > 0:#栈不为空
    14                     if stack[-1] == '(':#栈顶元素是对应的左括号
    15                         stack.pop(-1)#目前合法,则将栈顶出栈
    16                     else:
    17                         stack.append(')')#栈顶元素无法匹配,则当前右括号入栈
    18                 else:#栈为空,则无法匹配
    19                     return False
    20             elif c == '}':
    21                 if len(stack) > 0:
    22                     if stack[-1] == '{':
    23                         stack.pop(-1)
    24                     else:
    25                         stack.append('}')
    26                 else:
    27                     return False
    28             elif c == ']':
    29                 if len(stack) > 0:
    30                     if stack[-1] == '[':
    31                         stack.pop(-1)
    32                     else:
    33                         stack.append(']')
    34                 else:
    35                     return False
    36         if len(stack) == 0:#如果栈可以左右都匹配(成对消除)
    37             return True#则是合法串
    38         else:
    39             return False

    思路: 

    1.左右匹配, 就相当于1进1出, 最后栈的长度为0, 返回真.

    2. 如果都不匹配, 就都入栈, 最后栈的长度不等于0, 返回false.

    3. 如果是示例5, 就是先 { 和 [ 入栈, 然后第3个 ] 的时候匹配了栈的-1个元素, 所以就移除, 最后一个 } 也是同样的道理.

     3.整理

    3.1 列表

    1 list1 = ['Google', 'Runoob', 1997, 2000]
    2 list2 = [1, 2, 3, 4, 5 ]
    3 list3 = ["a", "b", "c", "d"]
    4 list4 = ['red', 'green', 'blue', 'yellow', 'white', 'black']

    3.2 元组

    1 tup1 = ('Google', 'Runoob', 1997, 2000)

     3.3 栈, 后进先出.

    list模拟栈,进入顺序0 1 2 3,出栈顺序3 2 1 0

    list(-1)表示栈顶元素.

  • 相关阅读:
    C++中整型变量的存储大小和范围
    A1038 Recover the Smallest Number (30 分)
    A1067 Sort with Swap(0, i) (25 分)
    A1037 Magic Coupon (25 分)
    A1033 To Fill or Not to Fill (25 分)
    A1070 Mooncake (25 分)
    js 获取控件
    C#代码对SQL数据库添加表或者视图
    JS 动态操作表格
    jQuery取得下拉框选择的文本与值
  • 原文地址:https://www.cnblogs.com/vvzhang/p/13777644.html
Copyright © 2020-2023  润新知