Перевернуть часть строки между двумя заданными индексами

Мы напишем функцию solve, которая будет принимать строку st и два целых числа a и b в качестве аргументов.

Вам дана строка и два индекса. Цель функции состоит в том, чтобы инвертировать только часть строки между (и включая) этими индексами и вернуть результирующую строку.

Пример:

solve("codewars",1,5) //output: "cawedors"

В приведенном выше примере мы берем строку и переворачиваем только часть строки от символов 1 до (включительно) 5.

"codewars"
"c"   "odewa"    "rs"
"c"   "awedo"    "rs"
"cawedors"

После обращения подстроки строка снова собирается и возвращается.

Приступаем к написанию функции.

Во-первых, мы собираемся преобразовать строку в массив. Мы присваиваем массив strArr.

let strArr = st.split("");

Далее мы разобьем массив на три секции. Первый раздел будет содержать подстроку, предшествующую начальному индексу a. Если вы посмотрите на строку из приведенного выше примера, это будет буква «c».

Мы назначаем этот раздел строки переменной с именем start.

let start = strArr.slice(0, a);

Второй раздел будет содержать подстроку, которая следует за конечным индексом b. Если вы посмотрите на строку из приведенного выше примера, это будет «rs».

Мы назначаем эту подстроку end.

let end = strArr.slice(b+1);

Третий раздел — это подстрока, которую мы реверсируем. Используя комбинацию методов slice() и reverse(), мы извлечем подстроку из массива и реверсируем ее.

Мы присваиваем эту перевернутую подстроку reverseSection.

let reverseSection = strArr.slice(a,b+1).reverse();

Наконец, мы используем метод concat() для объединения массивов start, reverseSection и end. Мы также используем join() в конце, чтобы преобразовать массив обратно в строку.

Мы возвращаем его.

return start.concat(reverseSection.concat(end)).join("");

Вот полная функция:

Если вы найдете этот алгоритм полезным, ознакомьтесь с другими моими статьями о решениях алгоритмов JavaScript: