leetcode(python) 20. 有效的括号

  1. 有效的括号

给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。

示例 1:
输入: "()"
输出: true
示例 2:
输入: "()[]{}"
输出: true
示例 3:
输入: "(]"
输出: false
示例 4:
输入: "([)]"
输出: false
示例 5:
输入: "{[]}"
输出: true

题目链接:https://leetcode.com/problems/valid-parentheses/

数据结构里面的题,就是利用栈对比求解,python结合list列表即可。

解题思路:若括号字符串长度为奇数肯定无效。为偶数时分两种情况,示例 2 "()[]{}"型的,相邻的为一组有效括号,示例 5"{[]}"型的,首尾的一组为有效括号。

class Solution:
    def isValid(self, s: str) -> bool:
        temp = []
        l = len(s)
        if l % 2 == 1:    # 长度为奇数直接返回False
            return False
        i = 0
        while i < l:
            if len(temp)>0:    # 为示例5型的出栈对比
                s1 = temp.pop()
                if not self.valid(s1,s[i]):
                    temp.append(s1)
                    temp.append(s[i])
                i += 1
            else:    # 为示例2型的相邻两两对比
                if not self.valid(s[i], s[i+1]):
                    temp.append(s[i])
                    temp.append(s[i+1])
                i += 2
        return len(temp) == 0

    def valid(self, s1, s2):
        if s1 == '(':
            return s2 == ')'
        elif s1 == '[':
            return s2 == ']'
        elif s1 == '{':
            return s2 == '}'
        else:
            return False
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 需求 给定一个只包括 '('、')'、'{'、'}'、'['、']' 的字符串,判断字符串是否有效。 有效字符串...
    惑也阅读 392评论 0 3
  • 一、快捷键 ctr+b 执行ctr+/ 单行注释ctr+c ...
    o_8319阅读 5,857评论 2 16
  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 5,803评论 0 10
  •   引用类型的值(对象)是引用类型的一个实例。   在 ECMAscript 中,引用类型是一种数据结构,用于将数...
    霜天晓阅读 1,087评论 0 1
  • 1 只要水比较深的地方,就住着水鬼。 村头老李一家三口,过着平常农家人安宁祥和的日子,两夫妻五十岁出头,过了半辈子...
    毛阿花阅读 648评论 5 2