Написать функцию, входной параметр которой является строка. Функция должно поменять местами самое длинное и самое короткое слово в строке
Вот функция которая находит самое длинное и самое короткое слова, осталось поменять их местами
let minWord = "";
let maxWord = "";
function minMaxLengthWords(input)
{
let len = input.length;
let si = 0, ei = 0;
let min_length = len;
let min_start_index = 0;
let max_length = 0;
let max_start_index = 0;
while (ei <= len)
{
if (ei < len && input[ei] != ' ')
{
ei++;
}
else
{
let curr_length = ei - si;
if (curr_length < min_length)
{
min_length = curr_length;
min_start_index = si;
}
if (curr_length > max_length)
{
max_length = curr_length;
max_start_index = si;
}
ei++;
si = ei;
}
}
minWord =
input.substring(min_start_index,min_start_index + min_length);
maxWord =
input.substring(max_start_index, max_length);
}
let a = "Мы хорошо провели время";
Ответы (1 шт):
Автор решения: UModeL
→ Ссылка
Если отсутствуют критерии для слов одинаковой длины, то будут обменены первые подходящие под условие слова, а код может быть таким:
let str = "Мы хорошо провели время";
function fMinMaxLenWordExchange(s) {
// Разбиваем строку на массив слов
let words = s.split(' ');
// Формируем массив длин
let lengths = words.reduce((prev, curr) => [...prev, curr.length], []);
// Находим в массиве длин индексы минимального и максимального значений
let minIndex = lengths.indexOf(Math.min(...lengths)),
maxIndex = lengths.indexOf(Math.max(...lengths));
// На основе полученных выше индексов меняем местами слова в массиве слов
[words[minIndex], words[maxIndex]] = [words[maxIndex], words[minIndex]];
// Собираем заново строку и выводим в консоль
console.log(words.join(' '));
}
fMinMaxLenWordExchange(str);