Skip to content

Commit d1ba05c

Browse files
committed
Reject overflowing digit recompositions
1 parent abd8055 commit d1ba05c

4 files changed

Lines changed: 20 additions & 5 deletions

File tree

src/main/java/kyu7/DescendingOrder.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,12 @@ public static int sortDesc(int num) {
1818
arrayList.add(i);
1919
}
2020
arrayList.sort(Comparator.reverseOrder());
21-
int result = 0;
21+
StringBuilder result = new StringBuilder();
2222
for (int i : arrayList
2323
) {
24-
result = result * 10 + i;
24+
result.append(i);
2525
}
26-
return result;
26+
return Integer.parseInt(result.toString());
2727
}
2828

2929
}

src/main/java/kyu7/MinimumLine.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,20 @@
22

33

44
import java.util.Arrays;
5+
import java.util.stream.Collectors;
56

67

78
public class MinimumLine {
89

910
// 7 https://www.codewars.com/kata/5ac6932b2f317b96980000ca/train/java
1011

1112
public static int minValue(int[] values) {
12-
return Arrays.stream(values)
13+
String result = Arrays.stream(values)
1314
.sorted()
1415
.distinct()
15-
.reduce(0, (result, digit) -> result * 10 + digit);
16+
.mapToObj(String::valueOf)
17+
.collect(Collectors.joining());
18+
return Integer.parseInt(result);
1619
}
1720

1821
}

src/test/java/kyu7/DescendingOrderTest.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,11 @@
1717
import static kyu7.DescendingOrder.*;
1818
@Tag("smoke")
1919
public class DescendingOrderTest {
20+
@Test
21+
void rejectsReorderedValuesOutsideIntegerRange() {
22+
assertThrows(NumberFormatException.class, () -> sortDesc(2_147_483_647));
23+
}
24+
2025
@Test
2126
void smokeTestsShouldExecuteApi() {
2227
quality.SmokeMethodTestHarness.verify(kyu7.DescendingOrder.class);

src/test/java/kyu7/MinimumLineTest.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,13 @@
1717
import static kyu7.MinimumLine.*;
1818
@Tag("smoke")
1919
public class MinimumLineTest {
20+
@Test
21+
void rejectsConcatenatedValuesOutsideIntegerRange() {
22+
int[] values = {9, 8, 7, 6, 5, 4, 3, 2, 1, 99};
23+
24+
assertThrows(NumberFormatException.class, () -> minValue(values));
25+
}
26+
2027
@Test
2128
void smokeTestsShouldExecuteApi() {
2229
quality.SmokeMethodTestHarness.verify(kyu7.MinimumLine.class);

0 commit comments

Comments
 (0)