Разбейте предложение на слова, извлеките цифру из каждого и отсортируйте по её числовому значению. Сами слова изменять не нужно.
Функция упорядочивания слов в предложении по числам
Разбейте предложение на слова, извлеките цифру из каждого и отсортируйте по её числовому значению. Сами слова изменять не нужно.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Реализуйте функцию, получающую строку‑предложение, где каждое слово содержит одну цифру, и возвращающую новую строку, в которой слова расположены в порядке возрастания найденных цифр.
reorderWords('T4est 3a Thi1s is2') === 'Thi1s is2 3a T4est';
Ответ
Разбейте предложение на слова, извлеките цифру из каждого и отсортируйте по её числовому значению. Сами слова изменять не нужно.
function reorderWords(text) {
if (!text.trim()) return '';
return text.trim().split(/\s+/).map(word => {
const digits = word.match(/[0-9]/g);
if (!digits || digits.length !== 1) throw new Error('В слове нужна одна цифра');
return { word, order: Number(digits[0]) };
}).sort((a, b) => a.order - b.order).map(item => item.word).join(' ');
}
Для n слов сортировка занимает O(n log n). При повторяющихся номерах стабильная сортировка сохраняет относительный порядок исходных слов.