1、题目
2、题解
1)对题目进行分析后发现括号的如下规律,括号仅 2 种类型,2n(n为指定的括号数)个位置,满足如下规律。
(1)第一个必为左括号,最后一个必为右括号。
(2)其余位置左括号依次遍历,保证左括号个数大于右括号个数,右括号填补剩余位置即可。
使用回溯法实现,代码如下:
var res []string
var length int
func generateParenthesis(n int) []string {
res = []string{}
length = n
parentheses(0, 0, "")
return res
}
func parentheses(left int, right int,s string){
fmt.Println(strconv.Itoa(left)+" : "+strconv.Itoa(right)+" : "+s)
if len(s) == 2*length{
res = append(res, s)
}
if left<length{
parentheses(left+1, right, s+"(")
}
if right<left{
parentheses(left, right+1, s+")")
}
}