[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)
發佈了27 篇原創文章 · 獲贊 23 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章