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

这个题我一年前就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. 有效的括号-刷题思路分享)