您的位置:首页 > 其它

LintCode 生成括号

2017-03-27 09:57 288 查看
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)


  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: