1. 程式人生 > >22. Generate Parentheses(回溯)

22. Generate Parentheses(回溯)

ID list b- IT n) mage div base -c

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:

[
  "((()))",
  "(()())",
  "(())()",
  "()(())",
  "()()()"
]

技術分享圖片

思路:向string 中插入( 和 ),每插入一個就減1。 那麽如何保證這個combination 是正確的呢?

  1. 插入數量不超過n

  2. 可以插入 ) 的前提是 ( 的數量大於 )

所以就得到了遞歸的兩個條件。

 1 class Solution(object):
 2     def generateParenthesis(self, n):
 3         """
 4         :type n: int
 5         :rtype: List[str]
 6         """
 7         res = []
 8         def help(s,left,right):
 9             if(left==0 and right==0):
10                 res.append(s[:])
11
return 12 if left>0: 13 help(s+(,left-1,right) 14 if right>left: 15 help(s+),left,right-1) 16 help(‘‘,n,n) 17 return res

22. Generate Parentheses(回溯)