zoukankan      html  css  js  c++  java
  • The Ten Day 有效的括号

    class Solution(object):
        """
        给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。
    
        有效字符串需满足:
        
        左括号必须用相同类型的右括号闭合。
        左括号必须以正确的顺序闭合。
        注意空字符串可被认为是有效字符串。
        
        示例 1:
        
        输入: "()"
        输出: true
        示例 2:
        
        输入: "()[]{}"
        输出: true
        示例 3:
        
        输入: "(]"
        输出: false
        示例 4:
        
        输入: "([)]"
        输出: false
        示例 5:
        
        输入: "{[]}"
        输出: true
        
        来源:力扣(LeetCode)
        链接:https://leetcode-cn.com/problems/valid-parentheses
        著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
        """
    
        """
        @author : jiyanjiao
        @date :2020-4-8
        """
        
        # 基本解法
        @staticmethod
        def isValid(s):
            """
            :type s: str
            :rtype: bool
            """
            for i in s:
                if i == "(":
                    index_begin = s.find("(")
                    index_end = s.find(")")
                    if index_end == -1:
                        print("False")
                        return
                    index_r1 = s.find("[", index_begin, index_end)
                    index_r2 = s.find("{", index_begin, index_end)
                    index_r3 = s.find("]", index_begin, index_end)
                    index_r4 = s.find("}", index_begin, index_end)
                    if index_r1 == -1 and index_r2 == -1 and index_r3 == -1 and index_r4 == -1:
                        print("True")
                    else:
                        print("False")
                elif i == "[":
                    index_begin = s.find("[")
                    index_end = s.find("]")
                    index_r1 = s.find("(", index_begin, index_end)
                    index_r2 = s.find("{", index_begin, index_end)
                    index_r3 = s.find(")", index_begin, index_end)
                    index_r4 = s.find("}", index_begin, index_end)
                    if index_r1 == -1 and index_r2 == -1 and index_r3 == -1 and index_r4 == -1:
                        print("True")
                    else:
                        print("False")
                elif i == "{":
                    index_begin = s.find("{")
                    index_end = s.find("}")
                    index_r1 = s.find("(", index_begin, index_end)
                    index_r2 = s.find("[", index_begin, index_end)
                    index_r3 = s.find(")", index_begin, index_end)
                    index_r4 = s.find("]", index_begin, index_end)
                    if index_r1 == -1 and index_r2 == -1 and index_r3 == -1 and index_r4 == -1:
                        print("True")
                    else:
                        print("False")
        
        # 其他作者解法
        @staticmethod
        def isValid1(s):
            """
            :type s: str
            :rtype: bool
            """
            stack = []  # 设置一个列表,把该列表当做栈来使用即可。
            dic = {')': '(', '}': '{', ']': '['}  # 使用字典存储括号,并且右括号为key,左括号为value
            for char in s:
                if char in dic.values():  # 左括号就入栈
                    stack.append(char)
                elif char in dic.keys():  # 有右括号的话就进行比较,
                    if stack == [] or dic[char] != stack.pop():
                        return False
                else:
                    return False  # 不再字典中的输入直接输出错误
        
            return stack == []  # 如果栈最后是空的,那么则符合要求,输出true,如果不是,则输出false,使用一个条件表达式
    
       
    if __name__ == '__main__':
        s = Solution
        ss = "(]"
        s.isValid1(ss)
       
        
  • 相关阅读:
    论文Objects as Points的解读
    图像增强
    from __future__ import absolute_import作用
    python降级
    conda命令总是出现Solving environment: failed错误
    ResNet网络结构
    卷积与池化操作后特征图大小的计算
    vs2015安装包下载与安装教程
    每隔几秒检测进程是否挂了
    阿里云部署flask
  • 原文地址:https://www.cnblogs.com/jiyanjiao-702521/p/12659422.html
Copyright © 2011-2022 走看看