Skip to content

Commit c4e3fca

Browse files
authored
Update Generate Parentheses.java
1 parent 1d353a5 commit c4e3fca

File tree

1 file changed

+20
-22
lines changed

1 file changed

+20
-22
lines changed

Medium/Generate Parentheses.java

Lines changed: 20 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,28 @@
11
class Solution {
2-
Set<String> set;
32
public List<String> generateParenthesis(int n) {
4-
set = new HashSet<>();
5-
StringBuilder sb = new StringBuilder();
6-
helper(n, 0, 0, sb);
7-
return new ArrayList<>(set);
3+
List<String> result = new ArrayList<>();
4+
helper(result, 0, 0, n, new StringBuilder());
5+
return result;
86
}
97

10-
private void helper(int n, int open, int close, StringBuilder sb) {
11-
if (sb.length() == 2 * n) {
12-
set.add(sb.toString());
13-
}
14-
else {
15-
if (open <= close) {
16-
sb.append('(');
17-
helper(n, open + 1, close, new StringBuilder(sb.toString()));
18-
}
19-
else {
20-
sb.append(')');
21-
helper(n, open, close + 1, new StringBuilder(sb.toString()));
22-
sb.deleteCharAt(sb.length() - 1);
23-
if (open < n) {
24-
sb.append('(');
25-
helper(n, open + 1, close, new StringBuilder(sb.toString()));
26-
}
8+
private void helper(List<String> result, int start, int end, int n, StringBuilder sb) {
9+
if (start + end == 2 * n) {
10+
if (start == end) {
11+
result.add(new StringBuilder(sb.toString()).toString());
2712
}
13+
return;
14+
}
15+
if (start > end) {
16+
sb.append('(');
17+
helper(result, start + 1, end, n, sb);
18+
sb.deleteCharAt(sb.length() - 1);
19+
sb.append(')');
20+
helper(result, start, end + 1, n, sb);
21+
sb.deleteCharAt(sb.length() - 1);
22+
} else if (start == end) {
23+
sb.append('(');
24+
helper(result, start + 1, end, n, sb);
25+
sb.deleteCharAt(sb.length() - 1);
2826
}
2927
}
3028
}

0 commit comments

Comments
 (0)