Here’s another way without the need to independently add individual quotes:
func dfs(n int, path []string) []string {
if n == 1 {
return append(path, "()")
}
subPaths := dfs(n-1, []string{})
for i := range subPaths {
externalParen := "(" + subPaths[i] + ")"
preParen := "()" + subPaths[i]
postParen := subPaths[i] + "()"
path = append(path, externalParen)
path = append(path, preParen )
if preParen != postParen {
path = append(path, postParen)
}
}
return path
}
func generateParentheses(n int) []string {
if n == 0 {
return []string{""}
}
return dfs(n, []string{})
}