Skip to content

Commit d089e6d

Browse files
committed
plus
1 parent 37e2ffc commit d089e6d

File tree

1 file changed

+50
-0
lines changed

1 file changed

+50
-0
lines changed
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
package backtracking;
2+
3+
import java.util.ArrayList;
4+
import java.util.List;
5+
6+
public class AddPlusSymbol {
7+
8+
public static void main(String[] args) {
9+
AddPlusSymbol obj = new AddPlusSymbol();
10+
String input1 = "125";
11+
Long result1 = obj.addPlus(input1);
12+
System.out.println("input > " + input1 + " ; result > " + result1);
13+
String input2 = "9999999999";
14+
Long result2 = obj.addPlus(input2);
15+
System.out.println("input > " + input2 + " ; result > " + result2);
16+
}
17+
18+
public long addPlus(String input) {
19+
if (input == null || input.length() == 0) {
20+
return 0;
21+
}
22+
23+
long result = 0;
24+
List<String> resultList = new ArrayList<String>();
25+
char[] chars = input.toCharArray();
26+
// dfs
27+
dfs(chars, resultList, "", 0);
28+
29+
// loop list sum
30+
for (String s: resultList) {
31+
String[] nums = s.split("\\+");
32+
for (String n: nums) {
33+
result += Long.parseLong(n);
34+
}
35+
}
36+
37+
return result;
38+
}
39+
40+
private void dfs(char[] chars, List<String> resultList, String s, int start) {
41+
// exit
42+
if (start == chars.length - 1) {
43+
resultList.add(s + chars[chars.length - 1]);
44+
return;
45+
}
46+
s += chars[start];
47+
dfs(chars, resultList, s + '+', start + 1);
48+
dfs(chars, resultList, s, start + 1);
49+
}
50+
}

0 commit comments

Comments
 (0)