题目
给定n对括号, 写一个函数生成所有正确组合形式的括号对。
https://leetcode.com/problems/generate-parentheses/discuss/200253/Python-short-easy-and-fast-with-English-and-Chinese-explanation
思路
数学归纳法递归,n==1时是[’()’],然后针对1以后的第n层,就是将n-1层的每一个元素的每一个位置加一对括号生成一个新元素,这些元素加起来构成第n层的结果。
代码
class Solution:
def generateParenthesis(self, n):
"""
:type n: int
:rtype: List[str]
"""
def _gen(m):
level = set()
if m == 1:
return {'()'}
for x in _gen(m - 1):
for i in range(len(x)):
level.add(x[:i] + '()' + x[i:])
return level
return list(_gen(n))