• 20. Valid Parentheses


    1.题目:

    Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid.

    The brackets must close in the correct order, "()" and "()[]{}" are all valid but "(]" and "([)]" are not.

    这个题目不难理解,就是我们平时写程序时候,小括号,中括号,大括号都要对应的包起来,否则就有问题。

    现在给定一个字符串,需要你来判断一下这个字符串是否满足该要求!

    2.代码:

    该问题,用栈的后进先出结构就很容易解决了。分三种情况,1. 下一个元素是左边的,直接入栈;2.下一个元素是右边的,要看能否和栈顶元素匹配,不匹配当然有问题了;3.匹配的话,刚好抵消掉栈顶元素,栈顶元素出栈;最后,判断下栈有没有完全抵消即可。

    # -*-coding:utf-8-*-
    class Solution(object):
        def isValid(self, s):
            """
            :type s: str
            :rtype: bool
            """
            left = ['(','[','{']
            right = [')',']','}']
            l = list(s)
            stack = []
            left_count,right_count = 0,0
            #从左到右遍历字符串
            while len(l)>0:
                #如果这个字符是在left中,就写进stack
                if l[0] in left:
                    stack.append(l[0])
                #如果这个字符在right中,先判断stack,如果stack为空,直接返回False,如果stack的最后一位和该字符不匹配(否则会出现交叉情况,例如([)]),也直接返回False
                #如果stack的最后一位和该字符刚好匹配,则从stack中弹出匹配到的字符
                elif l[0] in right:        
                    if len(stack)==0:return False
                    #print (l[0],'  ',stack[-1])
                    #print (right.index(')'))
                    if right.index(l[0])==left.index(stack[-1]):
                        stack.pop()
                    else:
                        return False
                #如果输入不是这些,也返回False,题目中说了 just the characters,只有这六个字符
                else:
                    return False
                l.remove(l[0])
            #最后判断stack是否刚好抵消
            return len(stack)==0
                    
                
            
    if __name__=='__main__':
        s = '(('
        a = Solution()
        print (a.isValid(s))
        
  • 相关阅读:
    将数据库dbcp连接池改为c3p0连接池(草稿,别点)
    java遍历set集合
    mybatis映射文件(转)
    java.lang.ClassNotFoundException: com.microsoft.sqlserver.jdbc.SQLServerDriver
    redis通过json方案存取对象com.alibaba.fastjson.JSONException: syntax error, expect
    PL/SQL配置oracle客户端,登录远程数据库配置
    Weblogic部署项目三种方式
    Service具体解释(二):Service生命周期
    Coredata — 入门使用
    UML建模学习1:UML统一建模语言简单介绍
  • 原文地址:https://www.cnblogs.com/yuanzhaoyi/p/6098248.html
Copyright © 2020-2023  润新知