## The challenge

Your task is to make a function that can take any non-negative integer as an argument and return it with its digits in descending order. Essentially, rearrange the digits to create the highest possible number.

### Examples:

Input: `42145` Output: `54421`

Input: `145263` Output: `654321`

Input: `123456789` Output: `987654321`

## Test cases

 `````` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 `````` ``````import org.junit.Test; import static org.junit.Assert.assertEquals; public class DescendingOrderTest { @Test public void test_01() { assertEquals(0, DescendingOrder.sortDesc(0)); } @Test public void test_02() { assertEquals(51, DescendingOrder.sortDesc(15)); } @Test public void test_03() { assertEquals(987654321, DescendingOrder.sortDesc(123456789)); } } ``````

## The solution in Java

 `````` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 `````` ``````public class DescendingOrder { public static int sortDesc(final int num) { // return if a negative number if (num<0) return num; // our number we will return int sortedNumber = 0; // loop with a maximum number int // perform loop in reverse for (int i = 9; i >= 0; i--) { // set a local number variable int tmpNumber = num; // while greater than 0 while (tmpNumber > 0) { // get the digit int digit = tmpNumber % 10; // check for the greatest digit in the given number if (digit == i) { // build the sortedNumber value sortedNumber *= 10; sortedNumber += digit; } // reduce the loop variable tmpNumber /= 10; } } // return our sorted number return sortedNumber; } } ``````