Три начина за преокрет низа у ЈаваСцрипт-у

Овај чланак се заснива на скрипти скрипта алгоритма Фрее Цоде Цамп „Обрни низ“

Обртање низа је једно од најчешће постављаних ЈаваСцрипт питања у техничком кругу интервјуа. Испитивачи могу тражити од вас да напишете различите начине за преокретање низа, или могу тражити да преокренете низ без употребе уграђених метода, или чак могу затражити да обрнете низ помоћу рекурзије.

Постоји потенцијално десетине различитих начина да се то уради, изузимајући уграђену функцију обрнуте функције, јер је ЈаваСцрипт нема.

Испод су моја три најзанимљивија начина за решавање проблема обртања низа у ЈаваСцрипт-у.

Изазов алгоритма

Обратите понуђени низ.

Можда ћете морати да претворите низ у низ да бисте га могли обрнути.

Резултат мора бити низ.

function reverseString(str) { return str; } reverseString("hello");

Обезбеђени тест случајеви

  • реверсеСтринг („здраво“) треба да постане „оллех“
  • реверсеСтринг („Ховди“) треба да постане „идвоХ“
  • реверсеСтринг („Поздрав са Земље“) треба да врати „хтраЕ морф сгнитеерГ“

1. Обрните низ са уграђеним функцијама

За ово решење користићемо три методе: методу Стринг.прототипе.сплит (), методу Арраи.прототипе.реверсе () и методу Арраи.прототипе.јоин ().

  • Метода сплит () раздваја Стринг објекат у низ низа раздвајањем низа у поднизове.
  • Метода реверсе () преокреће низ на месту. Први елемент низа постаје последњи, а последњи постаје први.
  • Метода јоин () спаја све елементе низа у низ.
function reverseString(str) { // Step 1. Use the split() method to return a new array var splitString = str.split(""); // var splitString = "hello".split(""); // ["h", "e", "l", "l", "o"] // Step 2. Use the reverse() method to reverse the new created array var reverseArray = splitString.reverse(); // var reverseArray = ["h", "e", "l", "l", "o"].reverse(); // ["o", "l", "l", "e", "h"] // Step 3. Use the join() method to join all elements of the array into a string var joinArray = reverseArray.join(""); // var joinArray = ["o", "l", "l", "e", "h"].join(""); // "olleh" //Step 4. Return the reversed string return joinArray; // "olleh" } reverseString("hello");

Повезивање три методе заједно:

function reverseString(str) { return str.split("").reverse().join(""); } reverseString("hello");

2. Преокрените низ са смањењем за петљу

function reverseString(str) { // Step 1. Create an empty string that will host the new created string var newString = ""; // Step 2. Create the FOR loop /* The starting point of the loop will be (str.length - 1) which corresponds to the last character of the string, "o" As long as i is greater than or equals 0, the loop will go on We decrement i after each iteration */ for (var i = str.length - 1; i >= 0; i--) { newString += str[i]; // or newString = newString + str[i]; } /* Here hello's length equals 5 For each iteration: i = str.length - 1 and newString = newString + str[i] First iteration: i = 5 - 1 = 4, newString = "" + "o" = "o" Second iteration: i = 4 - 1 = 3, newString = "o" + "l" = "ol" Third iteration: i = 3 - 1 = 2, newString = "ol" + "l" = "oll" Fourth iteration: i = 2 - 1 = 1, newString = "oll" + "e" = "olle" Fifth iteration: i = 1 - 1 = 0, newString = "olle" + "h" = "olleh" End of the FOR Loop*/ // Step 3. Return the reversed string return newString; // "olleh" } reverseString('hello');

Без коментара:

function reverseString(str) { var newString = ""; for (var i = str.length - 1; i >= 0; i--) { newString += str[i]; } return newString; } reverseString('hello');

3. Обрни низ са рекурзијом

За ово решење користићемо две методе: методу Стринг.прототипе.субстр () и методу Стринг.прототипе.цхарАт ().

  • Метода субстр () враћа знакове у низу који почиње на наведеном месту кроз наведени број знакова.
"hello".substr(1); // "ello"
  • Метода цхарАт () враћа наведени знак из низа.
"hello".charAt(0); // "h"

Дубина рекурзије једнака је дужини низа. Ово решење није најбоље и биће јако споро ако је Стринг врло дугачак и величина стацка представља главну забринутост.

function reverseString(str) { if (str === "") // This is the terminal case that will end the recursion return ""; else return reverseString(str.substr(1)) + str.charAt(0); /* First Part of the recursion method You need to remember that you won’t have just one call, you’ll have several nested calls Each call: str === "?" reverseString(str.subst(1)) + str.charAt(0) 1st call – reverseString("Hello") will return reverseString("ello") + "h" 2nd call – reverseString("ello") will return reverseString("llo") + "e" 3rd call – reverseString("llo") will return reverseString("lo") + "l" 4th call – reverseString("lo") will return reverseString("o") + "l" 5th call – reverseString("o") will return reverseString("") + "o" Second part of the recursion method The method hits the if condition and the most highly nested call returns immediately 5th call will return reverseString("") + "o" = "o" 4th call will return reverseString("o") + "l" = "o" + "l" 3rd call will return reverseString("lo") + "l" = "o" + "l" + "l" 2nd call will return reverserString("llo") + "e" = "o" + "l" + "l" + "e" 1st call will return reverserString("ello") + "h" = "o" + "l" + "l" + "e" + "h" */ } reverseString("hello");

Без коментара:

function reverseString(str) { if (str === "") return ""; else return reverseString(str.substr(1)) + str.charAt(0); } reverseString("hello");

Условни (тернарни) оператор:

function reverseString(str) { return (str === '') ? '' : reverseString(str.substr(1)) + str.charAt(0); } reverseString("hello");

Обртање низа у ЈаваСцрипт- у је мали и једноставан алгоритам који се може тражити на техничком приказивању телефона или техничком интервјуу. Можете да пређете кратким путем у решавању овог проблема или да приступите решавању помоћу рекурзије или још сложенијих решења.

Надам се да вам је ово помогло. Ово је део моје серије чланака „Како решити ФЦЦ алгоритме“ о изазовима Алгоритма слободног кода, где предлажем неколико решења и корак по корак објашњавам шта се дешава испод хаубе.

Три начина за понављање низа у ЈаваСцрипт-у

У овом чланку ћу вам објаснити како решити изазов „Поновите низ понављање низа“ фрееЦодеЦампа. То укључује ...

Два начина за потврђивање завршетка низа у ЈаваСцрипт-у

У овом чланку ћу вам објаснити како решити изазов „Потврди крај“ фрееЦодеЦампа.

Три начина за факторизацију броја у ЈаваСцрипт-у

Овај чланак се заснива на скрипти „Основни алгоритам за бесплатни код Цамп“ „Факторизација броја“

Два начина за проверу палиндрома у ЈаваСцрипт-у

Овај чланак заснован је на скрипти скрипта алгоритма Фрее Цоде Цамп „Провери палиндроме“.

Три начина за проналажење најдуже речи у низу у ЈаваСцрипт-у

Овај чланак заснован је на скрипти за основни алгоритам Фрее Цоде Цамп „Пронађи најдужу реч у низу“.

Три начина наслова реченице у ЈаваСцрипт-у

Овај чланак заснован је на скрипти за основни алгоритам бесплатног кода „Наслов случаја реченица“.

Ако имате сопствено решење или било какве предлоге, поделите их испод у коментарима.

Или ме можете пратити на Медиум , Твиттер, Гитхуб и ЛинкедИн , одмах након што кликнете на зелено срце испод ;-)

# Останите знатижељни, # КеепОнХацкинг & # МакеИтХаппен!

Ресурси

  • метода сплит () - МДН
  • реверсна () метода - МДН
  • метода јоин () - МДН
  • Дужина низа - МДН
  • метода субстр () - МДН
  • метода цхарАт () - МДН