22. Generate Parentheses(回溯)
阿新 • • 發佈:2018-04-22
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 是正確的呢?
-
插入數量不超過n
-
可以插入 ) 的前提是 ( 的數量大於 )
所以就得到了遞歸的兩個條件。
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[:]) 11return 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(回溯)