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个')',并且每一个')'前面所包含的'('的数量不小于现在的')'的数量。

代码:

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

你可能感兴趣的:(Leetcode-第22题:Generate Parentheses)