Tre måter å reversere en streng i JavaScript

Denne artikkelen er basert på Free Code Camp Basic Algorithm Scripting “Reverse a String”

Å reversere en streng er et av de ofte stilte JavaScript-spørsmålene i den tekniske intervjurunden. Intervjuer kan be deg om å skrive forskjellige måter å reversere en streng, eller de kan be deg om å reversere en streng uten å bruke innebygde metoder, eller de kan til og med be deg om å reversere en streng ved hjelp av rekursjon.

Det er potensielt flere forskjellige måter å gjøre det på, unntatt den innebygde omvendte funksjonen, ettersom JavaScript ikke har en.

Nedenfor er mine tre mest interessante måter å løse problemet med å reversere en streng i JavaScript.

Algoritmeutfordring

Snu den medfølgende strengen.

Du må kanskje gjøre strengen om til en matrise før du kan reversere den.

Resultatet ditt må være en streng.

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

Levert testsaker

  • reverseString ("hei") skal bli "olleh"
  • reverseString ("Howdy") skal bli "ydwoH"
  • reverseString ("Hilsen fra jorden") skal returnere "htraE morf sgniteerG"

1. Snu en streng med innebygde funksjoner

For denne løsningen vil vi bruke tre metoder: String.prototype.split () -metoden, Array.prototype.reverse () -metoden og Array.prototype.join () -metoden.

  • Split () -metoden deler et strengobjekt i en rekke strenger ved å skille strengen i understrenger.
  • Omvendt () -metoden reverserer en matrise på plass. Det første matriseelementet blir det siste og det siste blir det første.
  • Metoden join () forbinder alle elementene i en matrise til en streng.
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");

Kjetting de tre metodene sammen:

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

2. Vend en streng med en avtagende for løkke

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');

Uten kommentarer:

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

3. Snu en streng med rekursjon

For denne løsningen vil vi bruke to metoder: String.prototype.substr () -metoden og String.prototype.charAt () -metoden.

  • Substr () -metoden returnerer tegnene i en streng som begynner på det angitte stedet gjennom det angitte antall tegn.
"hello".substr(1); // "ello"
  • Metoden charAt () returnerer det angitte tegnet fra en streng.
"hello".charAt(0); // "h"

Dybden på rekursjonen er lik lengden på strengen. Denne løsningen er ikke den beste og vil være veldig treg hvis strengen er veldig lang og stakkstørrelsen er av største bekymring.

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");

Uten kommentarer:

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

Betinget (ternær) operatør:

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

Å reversere en streng i JavaScript er en liten og enkel algoritme som kan spørres om en teknisk telefonscreening eller et teknisk intervju. Du kan ta den korte veien for å løse dette problemet, eller ta tilnærmingen ved å løse den med rekursjon eller enda mer komplekse løsninger.

Jeg håper du syntes dette var nyttig. Dette er en del av min artikkelserie "How to Solve FCC Algorithms" om Free Code Camp Algorithm Challenges, der jeg foreslår flere løsninger og forklarer trinn for trinn hva som skjer under panseret.

Tre måter å gjenta en streng i JavaScript

I denne artikkelen skal jeg forklare hvordan du løser freeCodeCamps "Gjenta en streng gjenta en streng" -utfordring. Dette innebærer ...

To måter å bekrefte slutten på en streng i JavaScript

I denne artikkelen vil jeg forklare hvordan du løser freeCodeCamps "Confirm the Ending" -utfordring.

Tre måter å faktorisere et nummer i JavaScript

Denne artikkelen er basert på Free Code Camp Basic Algorithm Scripting “Factorialize a Number”

To måter å sjekke for palindromer i JavaScript

Denne artikkelen er basert på Free Code Camp Basic Algorithm Scripting “Check for Palindromes”.

Tre måter å finne det lengste ordet i en streng i JavaScript

Denne artikkelen er basert på Free Code Camp Basic Algorithm Scripting “Finn det lengste ordet i en streng”.

Three Ways to Title Case a Setning in JavaScript

Denne artikkelen er basert på Free Code Camp Basic Algorithm Scripting “Title Case a Sentence”.

Hvis du har din egen løsning eller noen forslag, kan du dele dem nedenfor i kommentarene.

Eller du kan følge meg på Medium , Twitter, Github og LinkedIn , rett etter at du har klikket på det grønne hjertet nedenfor ;-)

# StayCurious, # KeepOnHacking & # MakeItHappen!

Ressurser

  • split () metode - MDN
  • revers () metode - MDN
  • join () metode - MDN
  • Strenglengde - MDN
  • substr () metode - MDN
  • charAt () metode - MDN