Перевернуть часть строки между двумя заданными индексами
Мы напишем функцию 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: