分析:
括号生成,这里采用的就是比较暴力的方式:
递归遍历:
首先需要确定停止条件:当左括号的数量与右括号的数量与目标括号数量相等的时候,则本次遍历得到的括号是合法的,将其放在列表中
如果出现左括号数量小于右括号的情况,则括号非法,同时如果左括号数量或者右括号数量大于目标数量,则生成的括号还是非法的,遇到这种情况,我们不进行处理,否则剩下的情况我们都对其进行左加或者右加的操作,直到合法或者非法停下来。
代码:
class Solution:
def generateParenthesis(self, n: int) -> List[str]:
total_list = []
now_str = "("
self.legal(total_list, now_str, 1, 0, n)
return total_list
def legal(self, total_list, now_str, left, right, target):
if left == right == target:
total_list.append(now_str)
elif left < right or left > target or right > target:
pass
else:
self.legal(total_list, now_str+"(", left+1, right, target)
self.legal(total_list, now_str+")", left, right+1, target)