美文网首页
LeetCode-20. 有效的括号-刷题思路分享

LeetCode-20. 有效的括号-刷题思路分享

作者: 小小尧 | 来源:发表于2019-02-27 13:39 被阅读9次

这个题我一年前就AC了,写一下思路和算法。
其实就是一个FILO后进先出栈,右括号匹配前一个入栈的左括号

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

核心代码:

            if c in m:
                pars.append(m[c])
            else:
                if pars==[] or not pars.pop(-1) == c :
                    return False

对于空字符串单独处理

        if s == "":
            return True

对于"]"这种单个右括号的情况单独处理,防止对空栈进行.pop(-1)操作

                if pars==[] :
                    return False

完整代码

class Solution:
    def isValid(self, s: str) -> bool:
        if s == "":
            return True
        m={'(':')','{':'}','[':']'}
        pars=[]
        for c in s:
            if c in m:
                pars.append(m[c])
            else:
                if pars==[] or not pars.pop(-1) == c :
                    return False
        if pars==[]:
            return True
        else:
            return False
AC截图

相关文章

网友评论

      本文标题:LeetCode-20. 有效的括号-刷题思路分享

      本文链接:https://www.haomeiwen.com/subject/shaxuqtx.html