leetcode每日一练

题目源于leetcode20.Valid Parentheses(有效的括号)

题目描述:

由于只包含字符的字符串’(’,’)’,’{’,’}’,’[‘和’]’,确定输入字符串是有效的。
如果输入字符串有效:
1.必须使用相同类型的括号关闭左括号。
2.必须以正确的顺序关闭打开括号。
请注意,空字符串也被视为有效。

在这里插入图片描述

解题思路:

1.利用栈后进先出的性质来进行判断
2.首先括号必须是成对出现,如果不是则返回False
3.如果栈是空的,则将字符串添加进栈中
4.再依次判断给出的字符中的元素与栈顶元素是否配对,是则弹出栈顶元素,否则添加,依次进行判断
5.如果输入的不是括号字符,则返回FALSE
6.如果退出循环后,栈中所有元素都配对并弹出,最后剩空栈,则返回TRUE,说明都是配对的

Python实现:

class Solution(object):
    def isValid(self, s):
        """
        :type s: str
        :rtype: bool
        """
        stack=[]
        length=len(s)
        if (length%2):
            return False
            
   
      for i in s:
            if not stack:
                stack.append(i)
                continue
            top=stack[-1]
            if top=='(':
                if i==')':
                    stack.pop()
                else:
                    stack.append(i)
            elif top=='{':
                if i=='}':
                    stack.pop()
                else:
                    stack.append(i)
            elif top=='[':
                if i==']':
                    stack.pop()
                else:
                    stack.append(i)
            else:
                     return False
        if not stack:
                return True
        else:
                return False
            
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值