Лучшие практики Reverse (обращения) строки в JavaScript, C ++ и Python

Reverse (обращения) строки в JavaScript, C ++ и Python Программирование и разработка

Обращение строки — один из наиболее часто задаваемых вопросов для программистов. Вы даже можете ожидать увидеть это во время собеседований по кодированию. на собеседовании вы можете ожидать, что знаете все способы перевернуть строку, за исключением встроенной функции реверса.

Есть десятки способов перевернуть строку, так какие из них лучше? Какие есть лучшие практики для переворачивания струн? Сегодня мы погрузимся в эти вопросы и узнаем, как перевернуть строку в трех популярных языках программирования: C ++, Javascript и Python.

Что такое переворот строки?

В программировании строка — это последовательность символов. Это один из основных типов данных, который мы используем для выражения текста, а не чисел. Переворачивание строки означает полное изменение порядка символов. Другими словами, мы заставляем строку считываться в обратном направлении.

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

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

В задачах кодирования вы можете увидеть такой вопрос:

  • Переверните строку.
  • Возможно, вам потребуется превратить строку в массив.
  • Ваш результат должен быть строкой.

Как перевернуть струну?

Есть много способов перевернуть строку на любом языке программирования. Выбранный вами метод зависит от требований программы, которую вы пишете. В некоторых языках есть встроенные функции или методы для переворота строк, но вам не следует полагаться на них. Есть десятки подходов, и некоторые из них более эффективны, чем другие:

  • Метод нарезки
  • Петлевой метод
  • Метод соединения
  • Обратный метод
  • Создание новой строки

Мы подробно рассмотрим все эти методы и рассмотрим лучшие практики для переворота строк. Давайте начнем!

Reverse строку в JavaScript

Reverse строку в JavaScript

Есть три шага, участвующий в изменении строки в JavaScript:.split(),.reverse(),.join(). Вы можете запомнить это по следующей формуле:

.s.r.j("")

Давайте возьмем строку «Hello!»и перевернем ее по этой формуле. Вот визуальное представление процесса.

Вот визуальное представление процесса

Split

В JavaScript этот split()метод разбивает строку на массив подстрок и возвращает новый массив. Это не меняет исходный массив.

var word = «Hello!»;
var splitWord = word.split(«»);

Теперь мы создали следующий массив автономных символов:

['H', 'e', 'l', 'l', 'o', '!']

Reverse

Теперь, когда у нас есть персонажи, мы хотим их перевернуть. Мы можем использовать reverse()метод, который переворачивает массив на месте.

var reverseWord = splitWord.reverse();

Приведенный выше код дает нам следующий вывод:

['!', 'o', 'l', 'l', 'e', 'h']

Итак, теперь наши символы перевернуты, но это больше не одна строка символов.

Join

Последний шаг — объединить эти символы в единую перевернутую строку. Мы можем использовать join()метод, который объединяет все элементы массива в одну строку.

joinedWords = reverseWord.join(«»)

Окончательный результат будет:

!olleH

Вы можете собрать все свои методы в одной строке:

var word = «Hello»;
var reverseWord = word.split(«»).reverse().join(«»);
console.log(reverseWord);

Reverse строку в C ++

Reverse строку в C ++

В C ++ обращение строки означает изменение порядка символов таким образом, чтобы она читалась в обратном направлении. Существует несколько реализаций, которые можно использовать для обращения строки в C ++. Давайте посмотрим на четыре лучших подхода.

1. Использование петли

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

#include <iostream>
using namespace std;
int main() {
  string greeting = «Hello!»;
  int len = greeting.length();
  int n=len-1;
  for(int i=0;i<(len/2);i++){
    swap(greeting[i],greeting[n]);
    n = n-1;
  }
  cout<<greeting<<endl;
}

Функция обмена

Возможен случай, когда вам не разрешено использовать встроенную функцию, поэтому нам нужно немного изменить код.

#include <iostream>
using namespace std;
int main() {
  string greeting = «Hello!»;
  int len = greeting.length();
  int n=len-1;
  for(int i=0;i<(len/2);i++){
    char temp = greeting[i];
    greeting[i] = greeting[n];
    greeting[n] = temp;
    n = n-1;
  }
  cout<<greeting<<endl;
}

Нет функции обмена

2. Использование встроенной функции реверса

В C ++ есть встроенная функция для обращения строки. Если вам разрешено использовать это, рекомендуется для простоты. У нас есть два входа для этой функции:

  • Итератор для начала строки
  • Итератор для концов строки
#include <iostream>
//The library below must be included for the reverse function to work
#include<bits/stdc++.h>
using namespace std;
int main() {
  string greeting = «Hello!»;
  //Note that it takes the iterators to the start and end of the string as arguments
  reverse(greeting.begin(),greeting.end());
  cout<<greeting<<endl;
}

Встроенная обратная функция

3. Создайте свою собственную функцию

Если мы не можем использовать какую-либо встроенную функцию, мы можем написать свою, чтобы перевернуть строку. Эта функция будет использовать рекурсию. Рекурсия — это когда функция вызывается внутри одной и той же функции. Взгляните, чтобы увидеть пример.

#include <iostream>
using namespace std;
void reverse_String(string& greet, int n,int i){
  if(n<=i){return;}
  swap(greet[i],greet[n]);
  reverse_String(greet,n-1,i+1);
}
int main() {
  string greeting = «Hello»;
  cout<<«String before reversal: «<<greeting<<endl;
  reverse_String(greeting,greeting.length()-1,0);
  cout<<«String after reversal: «<<greeting<<endl;
}

Создайте свою собственную рекурсивную функцию

Читайте также:  Наука о данных за 5 минут: что такое One Hot Encoding?

4. Создайте новую строку

Последний способ перевернуть строку в C ++ без какой-либо встроенной функции — создать новую строку. Мы будем перебирать нашу строку в обратном направлении и сохранять ее элементы в новой строке того же размера, используя этот push_backметод.

#include <iostream>
using namespace std;
int main() {
  string greeting = «Hello!»;
  string new_greeting;
  for(int n = greeting.length()-1; n >= 0; n—){
    new_greeting.push_back(greeting[n]);
  }
  cout<<«Original string: «<< greeting << endl;
  cout<<«New reversed string: «<< new_greeting << endl;
}

Создайте новую строку с push_back

Reverse строку в Python

Reverse строку в Python

В Python строки — это упорядоченные последовательности символов. В отличие от C ++, в Python нет встроенного метода обратного преобразования строки. Следующие три метода являются лучшими практиками для обращения строки в Python.

1. Метод нарезки

Мы можем использовать нарезку, чтобы перевернуть строку. slice()Функция возвращает срез объект, который используется, чтобы указать, как порезать последовательность символов Вы можете указать, где начать и закончить нарезку.

Мы должны создать срез, который начинается с длины строки и заканчивается индексом 0.

stringname[stringlength::-1]

Или мы можем написать это без указания длины строки.

stringname[::-1]

С помощью оператора slice мы начинаем с длины строки, заканчиваем в позиции 0 и перемещаемся с шагом −1 (что означает один шаг назад).

str=»Hello!» # initial string
stringlength=len(str) # calculate length of the list
slicedString=str[stringlength::-1] # slicing
print (slicedString) # print the reversed string

Метод нарезки Python

2. Петлевой метод

Подобно C ++, мы можем использовать цикл для переворота строки. w может использовать wither a forили whileloop. Для начала создадим новый массив с именем reversedString[]. Мы перебираем список с помощью индекса повторяющейся переменной, инициализированного длиной списка. Взгляните на процесс:

  • На каждой итерации объедините значение str[index-1]сreverseString
  • Уменьшить индекс
  • Продолжайте итерацию, пока индекс не станет меньше нуля
str = «Hello!» # initial string
reversedString=[]
index = len(str) # calculate length of string and save in index
while index > 0:
    reversedString += str[ index — 1 ] # save the value of str[index-1] in reverseString
    index = index — 1 # decrement index
print(reversedString) # reversed string

Метод цикла в Python

3. Метод соединения

Этот метод использует протокол итератора Python. Он перевернет строку, используя обратную итерацию со встроенной reversed()функцией, которая циклически перебирает элементы в строке в обратном порядке, а затем использует их.join()для объединения их в бесконечную строку!

Синтаксис этого метода следующий:

str="Hello!" 
reversedstring=''.join(reversed(str))

Проверьте это в виджете кода ниже.

str = ‘Hello!’ #initial string
reversed=».join(reversed(str)) # .join() method merges all of the characters resulting from the reversed iteration into a new string
print(reversed) #print the reversed string

Метод соединения в Python

Что изучать дальше

Поздравляю! Теперь вы знаете лучшие практики обращения строки в JavaScript, C ++ и Python. Эти навыки обязательно помогут вашему собеседованию. Обязательно продолжайте практиковать структуру данных, алгоритмы и другие распространенные вопросы собеседования, такие как:

  • Удалить четные целые числа из массива
  • Поиск в односвязном списке
  • Удалить значение из списка
  • Вставить новый объект в конец связанного списка
  • Обнаружить петлю в связанном списке
Оцените статью
bestprogrammer.ru
Добавить комментарий