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

    问题描述

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

    有效字符串需满足:

    1. 左括号必须用相同类型的右括号闭合。
    2. 左括号必须以正确的顺序闭合。

    注意空字符串可被认为是有效字符串。

    解决方案

    • 创建一个字典来映射括号的关系
    • 利用栈的后进先出特性来对括号进行校验
      • 如果要元素为正括号,直接入栈
      • 如果要入栈的括号不能与栈尾的元素闭合,则返回错
    • 最后站如果不为空,则返回错误

    时间复杂度:O(n)

    show me the code

    class Solution:
        def isValid(self, s: str) -> bool:
            my_dict = {
                "}": "{",
                "]": "[",
                ")": "("
            }
            my_stack = []
            for i in s:
                if i not in my_dict:                                        # 如果不是反括号,入栈
                    my_stack.append(i)
                elif not my_stack or my_dict[i] is not my_stack.pop():      # 如果栈为空,或者当前的反括号不能与栈尾的元素闭合
                    return False  
            return not my_stack                                             # 栈空则返回真,反之则假
    
    
  • 相关阅读:
    hutool工具之验证码登录
    jsp下拉框
    MyBatis错误之找不到实体类
    MybatisDay1
    JDBCUtil
    JDBC-1
    SQL学习笔记day01
    CoreJava基础面试题
    每日leetcode-数组-54. 螺旋矩阵
    每日leetcode-数组-396. 旋转函数
  • 原文地址:https://www.cnblogs.com/huang-yc/p/10707975.html
Copyright © 2011-2022 走看看