Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses.
For example, given n = 3, a solution set is:
[ "((()))", "(()())", "(())()", "()(())", "()()()" ]
LeetCode:链接
如果左括号还有剩余,则可以放置左括号,如果右括号的剩余数大于左括号,则可以放置右括号。
class Solution(object):
def generateParenthesis(self, n):
"""
:type n: int
:rtype: List[str]
"""
if n == 0:
return []
res = []
self.generate(n, n, "", res)
return res
# left是左括号的数量 right是右括号的数量 pStr是一个合法的括号组合
def generate(self, left, right, pStr, res):
if left == 0 and right == 0:
res.append(pStr)
return
# 如果左括号还有剩余,则可以放置左括号
if left > 0:
self.generate(left-1, right, pStr+"(", res)
# 如果右括号的剩余数大于左括号,则可以放置右括号
if right > left:
self.generate(left, right-1, pStr+")", res)