http://www.lintcode.com/zh-cn/problem/generate-parentheses/
给定 n 对括号,请写一个函数以将其生成新的括号组合,并返回所有组合结果。
给定
n = 3, 可生成的组合如下:
"((()))", "(()())", "(())()", "()(())", "()()()"
class Solution:
# @param {int} n n pairs
# @return {string[]} All combinations of well-formed parentheses
def generateParenthesis(self, n):
# Write your code here
self.limit = n
self.ret = []
self._generateParenthesis("", 0, 0)
return self.ret
def _generateParenthesis(self, comb, leftnum, rightnum):
if leftnum == self.limit and rightnum == self.limit:
self.ret.append(comb)
return
if leftnum < self.limit:
self._generateParenthesis(comb+‘(‘, leftnum+1, rightnum)
# 如果右括号小于左括号才可以加右括号
if rightnum < leftnum:
self._generateParenthesis(comb+‘)‘, leftnum, rightnum+1)
原文:http://www.cnblogs.com/LiCheng-/p/6625334.html