funcgenerateParenthesis(n int)[]string{var res []stringgen(n,0,0,"",&res)return res
}//left和right分别为左右括号已使用的个数,str保存字符串,res保存满足题意的所有结果funcgen(n int, left int, right int, str string, res *[]string){if left == n && right == n {*res =append(*res,str)return}if left < n {gen(n,left+1,right,str+"(",res)}if right < n && left > right {gen(n,left,right+1,str+")",res)}}
测试代码
package main
import"fmt"funcmain(){
res :=generateParenthesis(3)for_,v :=range res {
fmt.Println(v)}}funcgenerateParenthesis(n int)[]string{var res []stringgen(n,0,0,"",&res)return res
}//left和right分别为左右括号已使用的个数,str保存字符串,res保存满足题意的所有结果funcgen(n int, left int, right int, str string, res *[]string){if left == n && right == n {*res =append(*res,str)return}if left < n {gen(n,left+1,right,str+"(",res)}if right < n && left > right {gen(n,left,right+1,str+")",res)}}