首页 > 其他 > 详细

LintCode 生成括号

时间:2017-03-27 10:45:45      阅读:249      评论:0      收藏:0      [点我收藏+]

http://www.lintcode.com/zh-cn/problem/generate-parentheses/

原题

给定 n 对括号,请写一个函数以将其生成新的括号组合,并返回所有组合结果。

样例

给定 n = 3, 可生成的组合如下:

"((()))", "(()())", "(())()", "()(())", "()()()"

解题思路

  1. 典型的使用递归列举出所有答案
  2. 只有左括号数量大于右括号数量的时候才可以添加右括号

代码实现

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)
            

  

 

LintCode 生成括号

原文:http://www.cnblogs.com/LiCheng-/p/6625334.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!