Skip to content

Commit 073be5a

Browse files
committed
Digit Separation algorithm added for positive numbers
1 parent 47a725a commit 073be5a

File tree

2 files changed

+104
-0
lines changed

2 files changed

+104
-0
lines changed
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package com.thealgorithms.greedyalgorithms;
2+
3+
import java.util.ArrayList;
4+
import java.util.Collections;
5+
import java.util.List;
6+
7+
/**
8+
* This class provides methods to separate the digits of a large positive number into a list.
9+
*/
10+
public class DigitSeparationPositiveNumber {
11+
public DigitSeparationPositiveNumber() {
12+
}
13+
/**
14+
* Separates the digits of a large positive number into a list in reverse order.
15+
* @param largeNumber The large number to separate digits from.
16+
* @return A list of digits in reverse order.
17+
*/
18+
public List<Long> digitSeparationReverseOrder(long largeNumber) {
19+
List<Long> result = new ArrayList<>();
20+
if (largeNumber!=0) {
21+
while (largeNumber > 0) {
22+
result.add(largeNumber%10);
23+
largeNumber = largeNumber/10;
24+
}
25+
} else {
26+
result.add(0L);
27+
}
28+
return result;
29+
}
30+
/**
31+
* Separates the digits of a large positive number into a list in forward order.
32+
* @param largeNumber The large number to separate digits from.
33+
* @return A list of digits in forward order.
34+
*/
35+
public List<Long> digitSeparationForwardOrder(long largeNumber) {
36+
List<Long> result = this.digitSeparationReverseOrder(largeNumber);
37+
Collections.reverse(result);
38+
return result;
39+
}
40+
}
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
package com.thealgorithms.greedyalgorithms;
2+
3+
import org.junit.jupiter.api.Test;
4+
import static org.junit.jupiter.api.Assertions.assertEquals;
5+
import java.util.List;
6+
7+
public class DigitSeparationPositiveNumberTest {
8+
9+
@Test
10+
public void testDigitSeparationReverseOrder_SingleDigit() {
11+
DigitSeparationPositiveNumber digitSeparation = new DigitSeparationPositiveNumber();
12+
List<Long> result = digitSeparation.digitSeparationReverseOrder(5);
13+
assertEquals(List.of(5L), result);
14+
}
15+
16+
@Test
17+
public void testDigitSeparationReverseOrderMultipleDigits() {
18+
DigitSeparationPositiveNumber digitSeparation = new DigitSeparationPositiveNumber();
19+
List<Long> result = digitSeparation.digitSeparationReverseOrder(123);
20+
assertEquals(List.of(3L, 2L, 1L), result);
21+
}
22+
23+
@Test
24+
public void testDigitSeparationReverseOrderLargeNumber() {
25+
DigitSeparationPositiveNumber digitSeparation = new DigitSeparationPositiveNumber();
26+
List<Long> result = digitSeparation.digitSeparationReverseOrder(123456789);
27+
assertEquals(List.of(9L, 8L, 7L, 6L, 5L, 4L, 3L, 2L, 1L), result);
28+
}
29+
30+
@Test
31+
public void testDigitSeparationReverseOrderZero() {
32+
DigitSeparationPositiveNumber digitSeparation = new DigitSeparationPositiveNumber();
33+
List<Long> result = digitSeparation.digitSeparationReverseOrder(0);
34+
assertEquals(List.of(0L), result);
35+
}
36+
37+
@Test
38+
public void testDigitSeparationForwardOrderSingleDigit() {
39+
DigitSeparationPositiveNumber digitSeparation = new DigitSeparationPositiveNumber();
40+
List<Long> result = digitSeparation.digitSeparationForwardOrder(5);
41+
assertEquals(List.of(5L), result);
42+
}
43+
44+
@Test
45+
public void testDigitSeparationForwardOrderMultipleDigits() {
46+
DigitSeparationPositiveNumber digitSeparation = new DigitSeparationPositiveNumber();
47+
List<Long> result = digitSeparation.digitSeparationForwardOrder(123);
48+
assertEquals(List.of(1L, 2L, 3L), result);
49+
}
50+
51+
@Test
52+
public void testDigitSeparationForwardOrderLargeNumber() {
53+
DigitSeparationPositiveNumber digitSeparation = new DigitSeparationPositiveNumber();
54+
List<Long> result = digitSeparation.digitSeparationForwardOrder(123456789);
55+
assertEquals(List.of(1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L), result);
56+
}
57+
58+
@Test
59+
public void testDigitSeparationForwardOrderZero() {
60+
DigitSeparationPositiveNumber digitSeparation = new DigitSeparationPositiveNumber();
61+
List<Long> result = digitSeparation.digitSeparationForwardOrder(0);
62+
assertEquals(List.of(0L), result);
63+
}
64+
}

0 commit comments

Comments
 (0)