题目
- 括号生成
给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。
例如,给出 n = 3,生成结果为:
[
“((()))”,
“(()())”,
“(())()”,
“()(())”,
“()()()”
]
解法
func generateParenthesis(n int) []string {
nums := make([]string, 0)
generate("",&nums, n, n)
return nums
}
func generate(s string, nums *[]string, left int,right int ) {
if left == 0 && right == 0 {
*nums = append(*nums, s)
return
}
if left > 0 {
generate(s + "(", nums, left - 1, right)
}
if right > left {
generate(s + ")", nums, left, right - 1)
}
}