Как решить Sort the Date HackerRank Challenge?
Если вы хотите проверить или улучшить свои навыки программирования, HackerRank - одна из платформ, которую вы должны попробовать.
Проблема с сортировкой дат:
Отсортируйте список дат в порядке возрастания с учетом формата данных, показанного ниже:
Каждая дата имеет вид dd mmm yyyy
, где:
dd
- это набор {0–31}mmm
находится в наборе {январь, февраль, март, апр, май, июнь, июль, август, сентябрь, октябрь, ноябрь, декабрь}yyyy
- четыре цифры
Пример
dates = ['01 Mar 2017','03 Feb 2017','15 Jan 1998']
Массив дат сортируется по ['15 Jan 1998','03 Feb 2017','01 Mar 2017']
.
Описание функции
Завершите функцию sortDates
в редакторе ниже.
sortDates
имеет следующий параметр:
string dates[n]
: массив строк, каждое поле разделено пробелом
Возврат:
string arr[n]
: функция должна возвращать массив строк даты, отсортированных в хронологическом порядке по возрастанию.
Ограничения
- 2 ≤ длина свиданий ≤ 30
Решение:
В JavaScript мы можем использовать sort()
method для сортировки элементов массива с использованием локального алгоритма и возврата отсортированного массива.
Например:
const months = ['March', 'Jan', 'Feb', 'Dec']; months.sort(); Output: Array ["Dec", "Feb", "Jan", "March"]
Порядок сортировки по умолчанию - по возрастанию. Поскольку наш ввод - это массив дат, но в строке нам нужно предоставить функцию сравнения внутри метода сортировки, которая будет сортировать даты. Синтаксис для этого:
sort((firstEl, secondEl) => {
//sorting logic here...
})
Чтобы получить необходимое решение, мы можем преобразовать строку на дату и сравнить ее.
Объединив все вышеперечисленное, мы получим решение:
Поскольку здесь используется алгоритм на месте, копия массива dates
не создается.