- Notifications
You must be signed in to change notification settings - Fork 116
/
Copy pathgenerate_parentheses.go
40 lines (38 loc) · 871 Bytes
/
generate_parentheses.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
package generate_parentheses
funcgenerateParenthesis(nint) []string {
ifn==0 {
return []string{}
}
varret []string
tmps:=generateParenthesisI(n-1, n, 1)
forindex:=rangetmps {
ret=append(ret, "("+tmps[index])
}
returnret
}
funcgenerateParenthesisI(left, right, sumint) []string {
ifleft==0 {
bytes:=make([]byte, right)
forindex:=rangebytes {
bytes[index] =')'
}
return []string{string(bytes)}
}
varret []string
ifsum==0 {
tmps:=generateParenthesisI(left-1, right, 1)
forindex:=rangetmps {
ret=append(ret, "("+tmps[index])
}
} else {
tmps:=generateParenthesisI(left-1, right, sum+1)
forindex:=rangetmps {
ret=append(ret, "("+tmps[index])
}
tmps=generateParenthesisI(left, right-1, sum-1)
forindex:=rangetmps {
ret=append(ret, ")"+tmps[index])
}
}
returnret
}