递归求解该题,对于n个括号的情况,首先返回n-1个括号的所有结果,然后把一个新的括号插入到n-1个括号结果的每个情况中,组成新的情况,这个插入方法为:新的括号插在最前面,插在最后面,插在每一个(的后面。需要注意的是,对于n-1个括号返回的结果,便利每个结果进行新括号插入时,会有几种情况下是重复的,解决该重复问题的方法是使用set自动去重即可。
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param n int整型
# @return string字符串一维数组
#
class Solution:
def generateParenthesis(self , n: int) :
# write code here
if n==1:
return ['()']
else:
result_list = set()
result = self.generateParenthesis(n-1)
for i in range(len(result)):
tmp_ele = result[i]
result_list.add('()'+tmp_ele)
result_list.add(tmp_ele+'()')
for j in range(len(tmp_ele)):
if tmp_ele[j] == '(':
result_list.add(tmp_ele[:j+1] + '()' +tmp_ele[j+1:])
return list(result_list)
n=2
print(Solution().generateParenthesis(n))