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