有效括号问题

题目:有效括号问题

给定一个只包括 '('')''{''}''['']' 的字符串,判断字符串是否有效。

有效字符串需满足:

  1. 左括号必须用相同类型的右括号闭合。
  2. 左括号必须以正确的顺序闭合。

注意空字符串可被认为是有效字符串。

解题思路:

1)首先需要注意空字符串算作有效

2)栈的特点先进后出,譬如字符串“([{}])”,判断流程:step1:循环遍历字符串,碰到左括号"("或者“[”或者“{”存入空栈S;step2:碰到右括号")"或者“]”或者“}“,则将S的栈顶元素取出 ,看两者是否匹配;不匹配则无效,匹配则继续

代码:

方案一:栈

class Solution(object):
    def isValid(self, s):
        """
        :type s: str
        :rtype: bool
        """
        stack = []
        x = ['(','[','{']
        y = [')',']','}']
        z = ['()','[]','{}']
        if s.strip()=='':
            return True
        else:
            for i in s:
                if i in x :
                    stack.append(i)
                if i in y:
                    if stack == []:
                        return False
                    else:
                        pop_item = stack.pop()
                        sz = pop_item + i
                        if sz not in z:
                            return False
            return True

猜你喜欢

转载自www.cnblogs.com/luopan/p/10157028.html