leetcode-第22题:generate parentheses

题目:

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:

“((()))”, “(()())”, “(())()”, “()(())”, “()()()”

分析:对于一个给定的n,有效的括号必定包括n个’(‘和n个’)’,并且每一个’)’前面所包含的’(‘的数量不小于现在的’)’的数量。

代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
def combine(self, pre, l, r, result): 
#l,r表示剩余'('和')'的数量
if l == 0:
result.append(pre+')'*r)
else:
self.combine(pre+'(', l-1, r, result)
if l < r:
self.combine(pre+')', l, r-1, result)


def generateParenthesis(self, n):
"""
:type n: int
:rtype: List[str]
"""
if n == 0:
return []
result = []
self.combine('',n,n,result)
return result