zoukankan      html  css  js  c++  java
  • Leetcode_20【有效的括号】

    文章目录:

    • 题目
    • 脚本一
    • 脚本一逻辑

    题目:

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

    有效字符串需满足:

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

    示例 1:

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

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

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

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

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


    脚本一:【用时:32ms】

    class Solution:
        def isValid(self, s: str) -> bool:
            zidian1 = {')':'(',']':'[','}':'{'}
            lists = list(s)
            flag = 'bb'
            i = 0
            while lists:
                try:
                    lists[i]
                except IndexError:
                    return(False)
                num1 = len(lists)
                if lists[i] in zidian1:
                    if lists[i-1] and lists[i-1] == zidian1[lists[i]]:
                        del lists[i]
                        del lists[i-1]
                        i -= 1
                    else:
                        return(False)
                        flag = 'xx'
                else:
                    i += 1
                    if i >= num1:
                        flag = 'xx'
                        return(False)
            if flag == 'bb':
                return(True)

    脚本一逻辑:

    • 确实惭愧,此题是笔者想了两天时间才想到这种处理逻辑
    • 此题的主要逻辑是:
      • 有效括号势必有这样的规律:字符串从左往右开始数起,第一个右括号比如"]""}"")",它的左边必定为相匹配的左括号;
      • 基于如上的原则,只需要将符合此原则的括号从原字符串中去除
      • 为了去除方便,可将字符串转换为列表的方式
      • 若遇到不符合此规律的,则不是有效的括号 
  • 相关阅读:
    Django开发个人博客网站
    Photoshop界面字体太小解决方案
    [Leetcode]第三题:无重复字符最长子串
    web网站服务(1)
    备份与恢复笔记和实验
    oracle事物和常用数据库对象笔记和实验
    Oracle配置管理实验
    Oracle配置管理笔记
    Oracle体系结构和用户管理实验
    Oracle数据库部署
  • 原文地址:https://www.cnblogs.com/mailong/p/12037774.html
Copyright © 2011-2022 走看看