## The challenge

You will be given a number and you will need to return it as a string in Expanded Form.

Examples:

 ``````1 2 3 `````` ``````Challenge.expandedForm(12); // Should return "10 + 2" Challenge.expandedForm(42); // Should return "40 + 2" Challenge.expandedForm(70304); // Should return "70000 + 300 + 4" ``````

NOTE: All numbers will be whole numbers greater than 0.

## The solution in Java code

Option 1:

 `````` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 `````` ``````public class Challenge { public static String expandedForm(int num) { StringBuffer res = new StringBuffer(); int d = 1; while(num > 0) { int nextDigit = num % 10; num /= 10; if (nextDigit > 0) { res.insert(0, d * nextDigit); res.insert(0, " + "); } d *= 10; } return res.substring(3).toString(); } } ``````

Option 2:

 `````` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 `````` ``````import java.util.LinkedList; public class Challenge { public static String expandedForm(int num) { LinkedList expandedList = new LinkedList<>(); int digit; int multiplier = 1; while (num > 0) { digit = (num % 10) * multiplier; if (digit != 0) expandedList.push(Integer.toString(digit)); num /= 10; multiplier *= 10; } return String.join(" + ", expandedList); } } ``````

Option 3:

 `````` 1 2 3 4 5 6 7 8 9 10 11 12 `````` ``````import java.util.stream.IntStream; import static java.util.stream.Collectors.joining; public class Challenge { public static String expandedForm(int num) { var ns = ""+num; return IntStream.range(0, ns.length()) .mapToObj(i -> ns.charAt(i) + "0".repeat(ns.length() - 1 - i)) .filter(e -> !e.matches("0+")) .collect(joining(" + ")); } } ``````

## Test cases to validate our solution

 `````` 1 2 3 4 5 6 7 8 9 10 11 12 `````` ``````import org.junit.Test; import static org.junit.Assert.assertEquals; import org.junit.runners.JUnit4; public class SolutionTest { @Test public void testSomething() { assertEquals("10 + 2", Challenge.expandedForm(12)); assertEquals("40 + 2", Challenge.expandedForm(42)); assertEquals("70000 + 300 + 4", Challenge.expandedForm(70304)); } } ``````