问题描述:
数字n代表生成括号的对数,请设计一个函数,用于能够生成所有可能的并且有效的括号组合
示例:
输入: n = 3
输出: ["((()))", "(()())", "(())()", "()(())", "()()()"]
输入: n = 1
输出: ["()"]
package main
import (
"fmt"
)
var (
arr []string
)
func printBracket(str string, left, right int) {
if left == 0 && right == 0 {
arr = append(arr, str)
return
}
if left == right {
printBracket(str + "(", left - 1, right)
} else if left < right {
if left > 0 {
printBracket(str + "(", left - 1, right)
}
printBracket(str + ")", left, right-1)
}
return
}
func main() {
arr = make([]string, 0)
printBracket("", 1, 1)
fmt.Println("arr 1", arr)
arr = make([]string, 0)
printBracket("", 3, 3)
fmt.Println("arr 3", arr)
}