[leetcode]Generate Parentheses 生成圓括號 python實現
阿新 • • 發佈:2019-02-05
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:
[
“((()))”,
“(()())”,
“(())()”,
“()(())”,
“()()()”
]
Subscribe to see which companies asked this question
這個題乍一看估計是要遞迴的
大致的思路是:
這種有效的括號組合”()()(),(())()”的要求是假設這個長度是2n,那麼在
因此思路就是DFS,如果左括號的個數還有剩餘,則+’(‘然後遞迴,如果右括號有剩餘且小於左括號的個數則+‘)’。
最後左右括號都不剩餘的時候,也就是該排的都排完了,放入結果。
程式碼如下:
class Solution(object):
def generateParenthesis(self, n):
"""
:type n: int
:rtype: List[str]
"""
self.res = []
self.generateParenthesisIter('',n, n)
return self.res
def generateParenthesisIter(self, mstr, r, l):
if r ==0 and l==0:
self.res.append(mstr)
if l>0:
self.generateParenthesisIter(mstr+'(',r,l-1)
if r>0 and r>l:
self.generateParenthesisIter(mstr+')' ,r-1,l)