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

题目描述:

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

leetcode每日一练

解题思路:

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
            

相关文章: