判断括号是否闭合


题目

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

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

实现思路

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

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

代码实现:

s = '[sfddsf]{kohij]k}'
def isValid(s):
    stack = []
    for char in s:
        if char == '[' or char == '{' or char == '(':
            stack.append(char)
        if char == ']':
            if len(stack)==0 or stack.pop()!='[':
                return False

        if char == '}':
            if len(stack)==0 or stack.pop()!='{':
                return False

        if char == ')':
            if len(stack)==0 or stack.pop()!='(':
                return False


    return True if len(stack)==0 else False

print(isValid(s))

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM