数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。
- 示例:
输入:n = 3
输出:[“((()))”,”(()())”,”(())()”,”()(())”,”()()()”]解法:
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
35object BracketsGen {
def main(args: Array[String]): Unit = {
println(solution1(1))
println(solution1(2))
println(solution1(3))
println(solution1(4))
}
/**
* 迭代
*/
def solution1(n: Int): List[String] = {
val arr = new Array[Set[String]](n + 1)
arr(1) = Set("()")
for (i <- 2 until n + 1) {
arr(i) = Set()
}
for (i <- 2 until n + 1) {
for (last <- arr(i - 1)) {
arr(i) += last + "()"
for (j <- 0 until last.length - 1) {
if (last.charAt(j).toString == "(") {
if (last.charAt(j + 1).toString == ")") {
arr(i) += last.substring(0, j + 1) + "()" + last.substring(j + 1, last.length)
arr(i) += last.substring(0, j + 2) + "()" + last.substring(j + 2, last.length)
}
}
}
}
}
arr(n).toList
}
}