Skip to content

Commit a80e6a2

Browse files
committed
Fix & improve AddStrings task solution
1 parent b3fdb84 commit a80e6a2

File tree

2 files changed

+20
-15
lines changed

2 files changed

+20
-15
lines changed

src/main/java/by/andd3dfx/numeric/AddStrings.java

Lines changed: 17 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -37,32 +37,34 @@ public static String addStrings(String num1, String num2) {
3737
int n1 = chars1[i] - '0';
3838
int n2 = chars2[j] - '0';
3939

40-
var res = n1 + n2 + accumulator;
41-
accumulator = 0;
42-
if (res <= 9) {
43-
sb.append(res);
44-
} else {
45-
sb.append(res % 10);
46-
res = res / 10;
47-
accumulator = res;
48-
}
40+
accumulator = calcAccumulator(n1 + n2 + accumulator, sb);
4941

5042
i--;
5143
j--;
5244
}
5345
while (i >= 0) {
54-
int n1 = chars1[i] - '0' + accumulator;
55-
accumulator = 0;
56-
sb.append(n1);
46+
int n1 = chars1[i] - '0';
47+
accumulator = calcAccumulator(n1 + accumulator, sb);
5748
i--;
5849
}
5950
while (j >= 0) {
60-
int n2 = chars2[j] - '0' + accumulator;
61-
accumulator = 0;
62-
sb.append(n2);
51+
int n2 = chars2[j] - '0';
52+
accumulator = calcAccumulator(n2 + accumulator, sb);
6353
j--;
6454
}
55+
if (accumulator > 0) {
56+
sb.append(accumulator);
57+
}
6558

6659
return sb.reverse().toString();
6760
}
61+
62+
private static int calcAccumulator(int res, StringBuilder sb) {
63+
if (res <= 9) {
64+
sb.append(res);
65+
} else {
66+
sb.append(res % 10);
67+
}
68+
return res / 10;
69+
}
6870
}

src/test/java/by/andd3dfx/numeric/AddStringsTest.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@ public void addStrings() {
1111
assertThat(AddStrings.addStrings("11", "123")).isEqualTo("134");
1212
assertThat(AddStrings.addStrings("456", "77")).isEqualTo("533");
1313
assertThat(AddStrings.addStrings("0", "0")).isEqualTo("0");
14+
assertThat(AddStrings.addStrings("1", "9")).isEqualTo("10");
15+
assertThat(AddStrings.addStrings("9", "99")).isEqualTo("108");
16+
1417
assertThat(AddStrings.addStrings("79", "179")).isEqualTo("258");
1518
}
1619
}

0 commit comments

Comments
 (0)