zoukankan      html  css  js  c++  java
  • Python编程题4--判断字符串里面的括号是否闭合

    题目

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

    例如,"{[{()}]()}"就是一个闭合的有效字符串。

    实现思路

    这里我们运用 里面 先进后出 的思想来处理问题。

    • 遍历字符串中的每一个括号
    • 定义一个空列表,如果遇到左括号,就存储到列表中
    • 如果遇到右括号,判断列表是否为空,不为空就弹出列表中最后一个左括号,并判断右括号和弹出的左括号是否匹配,不匹配则返回 False
    • 如果遇到右括号,且列表为空,那么也就表示列表中没有匹配的括号,则直接返回 False
    • 遍历结束,最后再判断列表是否为空,不为空则表示左/右括号有多余的,返回 False ; 为空则表示是闭合的有效字符串,返回 True

    代码实现

    def demo(s):
        stack = []
        for i in s:
            if i == "(" or i == "[" or i == "{":
                stack.append(i)
            elif i == ")":
                if len(stack) == 0 or stack.pop() != "(":
                    return False
            elif i == "]":
                if len(stack) == 0 or stack.pop() != "[":
                    return False
            elif i == "}":
                if len(stack) == 0 or stack.pop() != "{":
                    return False
        return True if len(stack) == 0 else False
    
    
    res1 = demo("{[{()}]()}")
    print(res1 == True)
    
    res2 = demo("{}())))[]")
    print(res2 == False)
    
    res3 = demo("")
    print(res3 == True)
    
  • 相关阅读:
    [日常训练]FJ省夏令营day1
    [vijos1002][NOIP2005]过河
    [poj2446]Chessboard
    [bzoj1854][SCOI2010]游戏
    [模板]匈牙利算法
    [bzoj3670][2014湖北省队互测week2]似乎在梦中见过的样子
    笔记3-27
    笔记3-26
    笔记3-25
    Codeforces891C. Envy
  • 原文地址:https://www.cnblogs.com/wintest/p/13511587.html
Copyright © 2011-2022 走看看