Как перевернуть строку в javascript
Три способа перевернуть строку в JavaScript’е
Данная статья является вольным переводом англоязычной статьи «Three Ways to Reverse a String in JavaScript» от FreeCodeCamp.
Ссылка на оригинал: https://medium.freecodecamp.org/how-to-reverse-a-string-in-javascript-in-3-different-ways-75e4763c68cb
Переворот строки — это одна из самых часто встречающихся задач на техническом собеседовании. Интервьюер может попросить вас написать несколько решений, в том числе без использования встроенных методов или с использованием рекурсии.
Существуют десятки различных способов сделать это, исключая встроенную функцию reverse, так как JavaScript не имеет ее (прим. переводчика: функция reverse есть только у массивов).
Ниже приведены три моих самых интересных решения этой задачи.
Постановка задачи
Напишите функцию, которая принимает на вход строку и возвращает ее в перевернутом виде.
Возможно, вам придется преобразовать строку в массив для того, чтобы вы смогли ее реверсировать.
Тесты:
reverseString(‘hello’) должен вернуть ‘olleh’
reverseString(‘Howdy’) должен вернуть ‘ydwoH’
reverseString(‘Greetings from Earth’) должен вернуть ‘htraE morf sgniteerG’
Решение №1: Переворот строки с помощью встроенных методов
Для этого решения мы будем использовать три встроенных метода: String.prototype.split(), Array.prototype.reverse() и Array.prototype.join().
Решение частых алгоритмических вопросов на JavaScript
Вы когда-нибудь пытались разработать алгоритм решения задачи на техническом собеседовании? В этом коротком уроке мы разберём три главных вопроса о проектировании алгоритмов, начиная с метода грубой силы (шаг за шагом, но не обязательно эффективно) и переходя к более оптимизированному, элегантному решению.
Разворот строки
Задача
Получив строку, необходимо развернуть её.
Решение №1
Мы можем использовать метод string.substring(), позволяющий взять каждую букву параметра str и добавить её в новую строку. Метод подстроки принимает один обязательный параметр и один необязательный параметр.
Первый параметр — это индекс, с которого вы хотите начать подстроку. Это инклюзивное значение, если вы пишете myString.substring(1), вывод будет включать в себя первый символ.
Вторым (необязательным) параметром является конечный индекс. Этот параметр не является инклюзивным. Это означает, что ваша подстрока будет включать все символы до этого индекса плюс каждый оставшийся символ справа от этого индекса.
Другой метод, который мы могли бы использовать в данном способе решения, был бы string.charAt(). Метод charAt принимает один параметр: индекс символа, который вы хотите вернуть.
Давайте напишем два алгоритма решения для возврата обратной строки.
Решение №2
Один из самых быстрых встроенных способов решения этой проблемы — разбить каждый символ в строке на элемент массива, перевернуть элементы в массиве и превратить элементы массива обратно в строку.
Мы будем использовать следующие методы:
string.split() — разбивает каждый символ на индекс массива.
string.reverse() — разворачивает элементы массива в обратном порядке.
string.join() — объединяет все элементы массива в строку.
Вы можете связать эти три функции вместе для элегантного решения.
Самое длинное слово
Задача
Вернуть длину самого длинного слова в проверяемом предложении.
Решение №1
Для первой попытки вы можете использовать string.split(‘ ‘) метод разбиения отдельных слов в предложении на массивы индексов. Этот способ не будет учитывать пунктуацию, однако вы можете решить эту проблему с помощью регулярного выражения.
Далее мы можем перебрать каждый элемент массива и подсчитать количество букв в каждом слове. Мы можем отследить самое длинное слова в предложении. Если текущее значение слова больше максимального значения слова, сохраненного в данный момент, заменяем его! Затем просто возвращаем переменную, содержащую самое длинное слово.
Вы можете перебрать массив с помощью цикла for или метода array.forEach(). Я предпочитаю последнее, но я включила и то, и другое ниже.
Решение №2
Чтобы оптимизировать это решение, мы всё равно будем использовать метод string.split(), который позволяет разделить предложение на элементы массива по словам.
Далее мы будем использовать метод array.map(), который позволяет взаимодействовать с различными значениями каждого элемента массива. Это вернет совершенно новый массив с необходимыми значениями, поэтому мы сохраним его в новой переменной.
Для каждого элемента в массиве вернём длину строки и сохраним её в новом массиве под названием arrOfLengths.
Наконец, мы можем использовать метод Math.max(. spreadOperator) с оператором spread для того, чтобы вернуть целочисленное значение для самой длинной строки в предложении.
Массив наибольших значений вложенного массива
Задача
Возвращает массив, состоящий из наибольших чисел каждого вложенного массива. Для простоты предоставленный массив будет содержать ровно 4 вложенных массива.
Решение №1
В качестве первого решения мы можем начать с вложенного цикла for-loop.
Для каждого элемента во внешнем массиве просмотрим его вложенный массив и найдём наибольшее значение, а затем вставим его в новый массив.
Решение №2
Мы можем использовать метод Math.max(. spreadOperator) с методом array.map() для циклического перебора каждого элемента во внешнем массиве, возврата максимального значения из вложенного массива и прямого возврата этого вновь созданного массива.
Данная статья является лишь одной из частей цикла статей. Автор оригинальной статьи планирует делать продолжение, а в случае выхода новых частей — я подготовлю перевод!
Три способа перевернуть строку в JavaScript
Эта статья основана на сценариях базового алгоритма Free Code Camp «Обратить строку».
Ниже приведены три моих самых интересных способа решения проблемы обращения строки в JavaScript.
Алгоритм Challenge
Возможно, вам придется преобразовать строку в массив, прежде чем вы сможете ее перевернуть.
Ваш результат должен быть строкой.
Предоставляемые тестовые примеры
1. Обращение строки с помощью встроенных функций
Для этого решения мы будем использовать три метода: метод String.prototype.split (), метод Array.prototype.reverse () и метод Array.prototype.join ().
Объединение трех методов вместе:
2. Переверните строку с помощью убывающего цикла For
Без комментариев:
3. Обратить строку с помощью рекурсии
Для этого решения мы будем использовать два метода: метод String.prototype.substr () и метод String.prototype.charAt ().
Глубина рекурсии равна длине String. Это решение не лучшее и будет очень медленным, если строка очень длинная, а размер стека имеет большое значение.
Без комментариев:
Условный (тернарный) оператор:
Надеюсь, вы нашли это полезным. Это часть моей серии статей «Как решать алгоритмы FCC», посвященных проблемам алгоритмов Free Code Camp, где я предлагаю несколько решений и шаг за шагом объясняю, что происходит внутри.
Три способа повторить строку в JavaScript
В этой статье я объясню, как решить задачу freeCodeCamp «Повторить строку, повторить строку». Это включает в себя…
Два способа подтвердить окончание строки в JavaScript
В этой статье я объясню, как решить задачу freeCodeCamp «Подтвердить окончание».
Три способа факторизации числа в JavaScript
Эта статья основана на сценариях базового алгоритма Free Code Camp «Факторизация числа».
Два способа проверки палиндромов в JavaScript
Эта статья основана на сценариях базового алгоритма Free Code Camp «Проверка палиндромов».
Три способа найти самое длинное слово в строке в JavaScript
Эта статья основана на сценариях базового алгоритма Free Code Camp «Найдите самое длинное слово в строке».
Три способа указать заглавие предложения в JavaScript
Если у вас есть собственное решение или какие-либо предложения, поделитесь ими ниже в комментариях.
Или вы можете подписаться на меня в Medium , Twitter, Github и LinkedIn сразу после того, как нажмете зеленое сердце ниже 😉
# StayCurious, # KeepOnHacking и # MakeItHappen!
Как перевернуть строку в javascript
Задачку сделать обратный ход строки на JavaScript очень часто задают на технических собеседованиях. Вас могут попросить написать код для переворачивания строки разными методами, например, без использования встроенных методов или с помощью рекурсии.
Потенциально существуют десятки различных способов реализовать алгоритм. В этой статье будут приведены три интересных способа решения задачи переворачивания строки на JavaScript, которые предложила в своем блоге программист Соня Мойссет.
Итак, задача
Написать алгоритм на JavaScript, который перевернет строку «hello».
Решения
1. Обращаем строку с помощью встроенных функций в JS
В алгоритме мы будем использовать три метода: метод String.prototype.split(), метод Array.prototype.reverse() и метод Array.prototype.join().
Шаг 1. Используем split() метод, чтобы вернуть новый массив.
Шаг 2. Используем reverse() метод, чтобы перевернуть созданный массив.
Шаг 3. Используем join() метод, чтобы соединить все элементы массива в строку.
Шаг 4. Возвращаем перевернутую строку.
Три метода вместе:
2. Переворачиваем строку с помощью цикла
Шаг 1. Создаем пустую строку, в которой будет размещаться новая строка.
Шаг 2. Создаем цикл FOR.
Шаг 3. Возвращаем перевернутую строку.
3. Переворачиваем строку с помощью рекурсии
Для этого решения мы будем использовать два метода: метод String.prototype.substr() и метод String.prototype.charAt().
Метод substr() возвращает указанное количество символов из строки, начиная с указанной позиции.
Метод charAt() возвращает указанный символ из строки.
Глубина рекурсии равна длине строки. Этот способ решения будет не самым удобным, если строка будет очень длинной.
JavaScript | Как перевернуть строку?
Как записать строку в обратном порядке силами JavaScript?
В этой публикации приведены три способа переворота строки в обратном порядке, где первая буква становится последней, а последняя — первой.
Логика работы функции
Все строки в JavaScript являются итерируемыми объектами, а значит могут быть приведены к массиву. Воспользуемся оператором троеточия.
Теперь в переменной massiv находится массив из символов строки.

Его последовательность элементов совпадает с последовательностью символов в строке. Сейчас мы можем воспользоваться методом reverse() и перевернуть массив.
Теперь элементы отзеркалились — последний стал первым.

Чтобы обратно вернуть строку, нам нужно воспользоваться методом join() и передать в качестве разделителя пустую строку. Она пустая потому что мы хотим слепить букву к букве (символ к символу).

В результате мы перевернули строку и получили слово « JavaScript » из слова « tpircSavaJ »
Собственный метод для объектов-прототипов String
Пример работы метода и его вызова:

Способ № 2 — через цикл for
У всех строк есть свойство длины — «length«. Мы можем перевернуть строку при помощи самописной функции и цикла for :

Собственный метод для объектов-прототипов String
Пример работы метода и его вызова:

Способ № 3 — через метод [@@match] для экземпляров регулярных выражений
Выражение переворота будет выглядеть так:
Мы используем регулярное выражение с глобальных флагом для полного сопоставления строки слева направо от начала и до конца. Шаблон регулярного выражения оформлен в синтаксисе Атома, который оформлен точкой. Точка обозначает один любой символ.
К методу [@@match] мы можем обратиться только по имени [Symbol.match]. Обратите внимание, что вызов этого метода НЕ СОПРОВОЖДАЕТСЯ ТОЧКОЙ.

Зачем переворачивать строку?
В некоторых ситуациях нужно поменять направление сопоставления строк при помощи регулярных выражений. По умолчанию это сопоставление производится слева-направо.
После переворота строки первые сопоставления по сути будут являться последними сопоставлениями.


