原题链接:https://leetcode-cn.com/problems/generate-parentheses/。
一道利用回溯算法求解的典型题目。
通过递归实现。
在函数中传入一个空串。通过递归为传入的串添加"(",或者")"。添加"(",或者")“需要根据字符串中”(",或者")"个数来决定。
直到字符串的长度为2*n。就添加这个串到结果列表中。
class Solution:
def generateParenthesis(self, n):
"""
:type n: int
:rtype: List[str]
"""
res = []
def back(S='', left=0, right=0):
if len(S) == 2*n: # 符合结束条件,将这个字符串添加到结果列表中
res.append(S)
return
elif left < n: # 如果left<n,说明可以添加"("
back(S+'(',left+1,right)
elif right < left: # 可以添加")"
back(S+')',left,right+1)
back()
return res