Skip to content

Commit 544b09d

Browse files
committed
Added task 22.
1 parent 56c6dda commit 544b09d

File tree

2 files changed

+50
-0
lines changed

2 files changed

+50
-0
lines changed
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package s0022.generate.parentheses;
2+
3+
import java.util.ArrayList;
4+
import java.util.List;
5+
6+
public class Solution {
7+
8+
public List<String> generate(StringBuilder sb, List<String> str, int open, int close) {
9+
10+
if (open == 0 && close == 0) {
11+
str.add(sb.toString());
12+
return str;
13+
}
14+
15+
if (open > 0) {
16+
sb.append('(');
17+
generate(sb, str, open - 1, close);
18+
sb.deleteCharAt(sb.length() - 1);
19+
}
20+
if (close > 0) {
21+
if (open < close) {
22+
sb.append(')');
23+
generate(sb, str, open, close - 1);
24+
sb.deleteCharAt(sb.length() - 1);
25+
}
26+
}
27+
return str;
28+
}
29+
30+
public List<String> generateParenthesis(int n) {
31+
StringBuilder sb = new StringBuilder();
32+
List<String> ans = new ArrayList<>();
33+
return generate(sb, ans, n, n);
34+
}
35+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package s0022.generate.parentheses;
2+
3+
import static org.hamcrest.CoreMatchers.equalTo;
4+
import static org.hamcrest.MatcherAssert.assertThat;
5+
6+
import org.junit.Test;
7+
8+
public class SolutionTest {
9+
@Test
10+
public void generateParenthesis() {
11+
assertThat(
12+
new Solution().generateParenthesis(3).toString(),
13+
equalTo("[((())), (()()), (())(), ()(()), ()()()]"));
14+
}
15+
}

0 commit comments

Comments
 (0)