了解一个算法原理的直接方法就是去实现它
题目地址: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