目录
题目描述
数字 n
代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。
样例
代码
class Solution:
def generateParenthesis(self, n: int) -> List[str]:
result = []
def vilidstr(left , right , answer):
if left:
vilidstr(left - 1 , right , answer + "(")
if right > left:
vilidstr(left , right - 1 , answer + ")")
if right == 0:
result.append(answer)
vilidstr(n , n , "")
return result
解题思路
拿到题目最初想的是以一对括号为单位做递归,即:
fun ()answer, fun (answer), fun answer()
但是从n=4开始这个递归方式就会开始丢解,具体原因尚未考虑清楚
最后的解法采用以单个括号为单位做递归:
如果左括号还有剩余,那当前序列就可以无条件加一个左括号进递归;
如果右括号剩的比左括号多,那当前序列可以补一个右括号进递归;
如果括号全部用完,输出,退出。