UniLecs #Task. Big number from string array
Задача: На нескольких полосках бумаги написаны одна или несколько подряд идущих цифр. Необходимо определить максимальное число, которое можно составить из полосок бумаги.
Входные данные: массив из строк произвольной длины, в каждой строке записаны числа. Гарантируется, что хотя бы в одной строке первая цифра отлична от нуля.
Вывод: максимальное число, которое можно составить.
Пример:
- Input: [ “2”, “20”, “004”, “66” ]
Output: 66220004
2. Input: [ “2”, “54”, “31”, “7”, “1” ]
Output: 7543121
Разбор
Необходимо отсортировать данные части по убыванию элементов, однако если использовать стандартную сортировку, которая сравнивает элементы посимвольно, то ответ будет неправильным (см. 1 пример, из 2 и 20 на первом месте будет стоять 20 и только потом 2, что для нас неприемлемо).
Поэтому нужно написать свой компаратор, который будет принимать две строки и сравнивать уже непосредственно их конкатенацию.
Реализация
https://gist.github.com/unilecs/78be1ec91dbb3451be81c26dace24b9a