22.括号生成
22.括号生成
题解
思路:dfs
代码
func generateParenthesis(n int) []string { var result []string //l代表已添加左括号的数量 //r代表已添加右括号的数量 var dfs func(l, r int, temp string) dfs = func(l, r int, temp string) { //如果右括号比左括号多,字符串必定不成立 //左右括号的数量皆不能超过n if l < r || l > n || r > n { return } //当添加的数量为2n时此字符串已经构造完毕 if l+r == 2*n { result = append(result, temp) return } dfs(l+1, r, temp+"(") dfs(l, r+1, temp+")") } dfs(0, 0, "") return result }