题解 | #括号生成#

括号生成

http://www.nowcoder.com/practice/c9addb265cdf4cdd92c092c655d164ca

递归求解该题,对于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))

全部评论

相关推荐

球球别再泡了:坏,我单9要了14
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务