Expression Add Operators LeetCode solution in Java

1
class Solution {
2
String s;
3
List<String> result;
4
int target;
5

6
public void operator(int i, int prev, long prod, long mid, String exp, List<Long> l) {
7
if (i == l.size()) {
8
if (mid + prod == target) result.add(exp);
9
return;
10
}
11
if (prev == -1) {
12
operator(i + 1, 0, -1 * l.get(i) * l.get(i - 1), mid + l.get(i - 1), exp + "*" + l.get(i), l);
13
} else if (prev == 1) {
14
operator(i + 1, 0, l.get(i) * l.get(i - 1), mid - l.get(i - 1), exp + "*" + l.get(i), l);
15
} else {
16
operator(i + 1, 0, prod * l.get(i), mid, exp + "*" + l.get(i), l);
17
}
18
operator(i + 1, -1, 0, mid + prod - l.get(i), exp + "-" + l.get(i), l);
19
operator(i + 1, 1, 0, mid + prod + l.get(i), exp + "+" + l.get(i), l);
20
}
21

22
public void rec(int in, List<Long> l) {
23
if (in == s.length()) {
24
operator(1, 1, 0, l.get(0), l.get(0) + "", l);
25
return;
26
}
27
if (s.charAt(in) == '0') {
28
l.add(0L);
29
rec(in + 1, l);
30
l.remove(l.size() - 1);
31
} else {
32
for (int i = in; i < s.length(); i++) {
33
l.add(Long.parseLong(s.substring(in, i + 1)));
34
rec(i + 1, l);
35
l.remove(l.size() - 1);
36
}
37
}
38
}
39

40
public List<String> addOperators(String num, int target) {
41
result = new ArrayList<>();
42
this.s = num;
43
this.target = target;
44
rec(0, new ArrayList<>(30));
45
return result;
46
}
47
}

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0