题目:
数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。
解题:
暴力破解,左括号等于右括号的时候只能增加左括号,大于的时候左右都可以增加
代码:
func generateParenthesis(n int) []string {
var s []string
return backtrack(s, "", n, n)
}
func backtrack(s []string, str string, open int, close int) []string {
if open == 0 && close == 0 {
return append(s, str)
}
if open == close {
return backtrack(s, str+"(", open-1, close)
}
if open < close {
if open > 0 {
s = backtrack(s, str+"(", open-1, close)
}
s = backtrack(s, str+")", open, close-1)
}
return s
}
官方没有golang的解答