forked from varunu28/LeetCode-Java-Solutions
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathExpression Add Operators.java
More file actions
29 lines (28 loc) · 1.04 KB
/
Expression Add Operators.java
File metadata and controls
29 lines (28 loc) · 1.04 KB
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
class Solution {
public List<String> addOperators(String num, int target) {
List<String> result = new ArrayList<>();
helper(num, target, "", result, 0, 0, 0);
return result;
}
private void helper(String s, long target, String path, List<String> result, int pos, long calculatedResult, long multed) {
if (pos == s.length()) {
if (calculatedResult == target) {
result.add(new String(path));
}
return;
}
for (int i = pos; i < s.length(); i++) {
if (i != pos && s.charAt(pos) == '0') {
break;
}
long curr = Long.parseLong(s.substring(pos, i + 1));
if (pos == 0) {
helper(s, target, path + curr, result, i + 1, curr, curr);
} else {
helper(s, target, path + "+" + curr, result, i + 1, calculatedResult + curr, curr);
helper(s, target, path + "-" + curr, result, i + 1, calculatedResult - curr, -curr);
helper(s, target, path + "*" + curr, result, i + 1, calculatedResult - multed + multed * curr, multed * curr);
}
}
}
}