了解一个算法原理的直接方法就是去实现它

题目地址:22. 括号生成 https://leetcode.cn/problems/generate-parentheses/description/

class Solution: 
    # 暴力递归
    def generateParenthesis(self, n: int) -> List[str]:
        # 检查字符串是否合法
        def check(str):
            tmp = []
            try:
                for char in(str):
                    if char == "(":
                        tmp.append(char)
                    else:
                        tmp.pop()
            except:
                return False
            return True

        res = []
        # 递归生成所有可能的符号组合
        def generate_string(left, right, curstr):
            if left == 0 and right==0:
                if check(curstr):
                    res.append(curstr)
                return
            if left > 0:
                generate_string(left-1, right, curstr+"(")
            if left <= right:
                generate_string(left, right-1, curstr+")")
        generate_string(n, n, "")
        return res

更多推荐