0
点赞
收藏
分享

微信扫一扫

LeetCode 20.有效的括号

题目:

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

有效字符串需满足:

  1. 左括号必须用相同类型的右括号闭合。
  2. 左括号必须以正确的顺序闭合。
  3. 每个右括号都有一个对应的相同类型的左括号。

示例 1:

输入:s = "()"
输出:true

示例 2:

输入:s = "()[]{}"
输出:true

示例 3:

输入:s = "(]"
输出:false

代码:

class Solution(object):
    def isValid(self, s):
        left_str = []
        for i in range(len(s)):
            if s[i] == '(' or s[i] == '[' or s[i] == '{':
                left_str.append(s[i])
            else:
                if len(left_str) == 0:
                    return False
                else:
                    temp = left_str[-1]
                    if s[i] == ')' and temp == '(':
                        left_str.pop()
                    elif s[i] == ']' and temp == '[':
                        left_str.pop()
                    elif s[i] == '}' and temp == '{':
                        left_str.pop()
                    else:
                        return False
        if len(left_str) == 0:
            return True
        else:
            return False

看到这道题首先想到的用栈,左括号进栈,遇到右括号就出栈,判断一下是否成功匹配。不成功直接返回False。

除了上面的直接不匹配,还要注意几种非法情况:

1.左括号多了

2.左括号少了即右括号多了

以上代码提交是没问题

举报

相关推荐

0 条评论