6
public void operator(int i, int prev, long prod, long mid, String exp, List<Long> l) {8
if (mid + prod == target) result.add(exp);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);16
operator(i + 1, 0, prod * l.get(i), mid, exp + "*" + l.get(i), l);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);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);27
if (s.charAt(in) == '0') {30
l.remove(l.size() - 1);32
for (int i = in; i < s.length(); i++) {33
l.add(Long.parseLong(s.substring(in, i + 1)));35
l.remove(l.size() - 1);40
public List<String> addOperators(String num, int target) {41
result = new ArrayList<>();44
rec(0, new ArrayList<>(30));