|
@@ -0,0 +1,93 @@
|
|
|
+package main
|
|
|
+
|
|
|
+import (
|
|
|
+ "fmt"
|
|
|
+)
|
|
|
+
|
|
|
+func main() {
|
|
|
+
|
|
|
+ fmt.Println("hello" + "(")
|
|
|
+ fmt.Println(generateParenthesis(3))
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+func generateParenthesis(n int) []string {
|
|
|
+ result := []string{}
|
|
|
+ left := 0
|
|
|
+ right := 0
|
|
|
+ strNow := ""
|
|
|
+ var gobackfunc func(n int, left int, right int, strNow string)
|
|
|
+ gobackfunc = func(n int, left int, right int, strNow string) {
|
|
|
+ if right > left {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if left == right && left == n {
|
|
|
+ result = append(result, strNow)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if left < n {
|
|
|
+ gobackfunc(n, left+1, right, strNow+"(")
|
|
|
+ }
|
|
|
+ if left > right {
|
|
|
+ gobackfunc(n, left, right+1, strNow+")")
|
|
|
+ }
|
|
|
+ }
|
|
|
+ gobackfunc(n, left, right, strNow)
|
|
|
+ return result
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+func generateParenthesis(n int) []string {
|
|
|
+
|
|
|
+ result := []string{}
|
|
|
+ left := 0
|
|
|
+ right := 0
|
|
|
+ strNow := ""
|
|
|
+ var gobackfunc func(result []string, n int, left int, right int, strNow string)
|
|
|
+ gobackfunc = func(result []string, n int, left int, right int, strNow string) {
|
|
|
+ if right > left {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if left == right && left == n {
|
|
|
+ result = append(result, strNow)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if left < n {
|
|
|
+ gobackfunc(result, n, left+1, right, strNow+"(")
|
|
|
+ }
|
|
|
+ if left > right {
|
|
|
+ gobackfunc(result, n, left, right+1, strNow+")")
|
|
|
+ }
|
|
|
+ }
|
|
|
+ gobackfunc(result, n, left, right, strNow)
|
|
|
+ return result
|
|
|
+}
|
|
|
+*/
|
|
|
+
|
|
|
+
|
|
|
+func generateParenthesis(n int) []string {
|
|
|
+ var generate func(left, right int, tmp []byte)
|
|
|
+
|
|
|
+ res := make([]string, 0)
|
|
|
+ generate = func(left, right int, tmp []byte) {
|
|
|
+ if left == 0 && right == 0 {
|
|
|
+ res = append(res, string(tmp))
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ if left != 0 {
|
|
|
+ tmp = append(tmp, '(')
|
|
|
+ generate(left-1, right, tmp)
|
|
|
+ tmp = tmp[:len(tmp)-1]
|
|
|
+ }
|
|
|
+
|
|
|
+ if right > left {
|
|
|
+ tmp = append(tmp, ')')
|
|
|
+ generate(left, right-1, tmp)
|
|
|
+ tmp = tmp[:len(tmp)-1]
|
|
|
+ }
|
|
|
+ }
|
|
|
+ generate(n, n, []byte{})
|
|
|
+ return res
|
|
|
+}
|
|
|
+*/
|