1. 程式人生 > >[leetcode]Generate Parentheses 生成圓括號 python實現

[leetcode]Generate Parentheses 生成圓括號 python實現

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,那麼在[1,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)