Tre måder at vende en streng i JavaScript

Denne artikel er baseret på Free Code Camp Basic Algorithm Scripting “Vend en streng”

At vende en streng er et af de hyppigst stillede JavaScript-spørgsmål i den tekniske interviewrunde. Interviewere kan bede dig om at skrive forskellige måder at vende en streng på, eller de kan bede dig om at vende en streng uden at bruge indbyggede metoder, eller de kan endda bede dig om at vende en streng ved hjælp af rekursion.

Der er potentielt snesevis af forskellige måder at gøre det på, undtagen den indbyggede omvendte funktion, da JavaScript ikke har en.

Nedenfor er mine tre mest interessante måder at løse problemet med at vende om en streng i JavaScript.

Algoritmeudfordring

Vend den medfølgende streng.

Du skal muligvis omdanne strengen til en matrix, før du kan vende den om.

Dit resultat skal være en streng.

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

Medfølgende testtilfælde

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

1. Vend en streng med indbyggede funktioner

Til denne løsning bruger vi tre metoder: String.prototype.split () -metoden, Array.prototype.reverse () -metoden og Array.prototype.join () -metoden.

  • Metoden split () opdeler et strengobjekt i en række streng ved at adskille strengen i understrenge.
  • Metoden reverse () vender en matrix på plads. Det første array-element bliver det sidste, og det sidste bliver det første.
  • Metoden join () forbinder alle elementer i et array 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");

Kæde de tre metoder sammen:

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

2. Vend en streng med en aftagende 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');

Uden kommentarer:

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

3. Vend en streng med rekursion

Til denne løsning bruger vi to metoder: metoden String.prototype.substr () og metoden String.prototype.charAt ().

  • Metoden substr () returnerer tegnene i en streng, der begynder på den angivne placering gennem det angivne antal tegn.
"hello".substr(1); // "ello"
  • Metoden charAt () returnerer det angivne tegn fra en streng.
"hello".charAt(0); // "h"

Rekursionsdybden er lig med strengens længde. Denne løsning er ikke den bedste og vil være rigtig langsom, hvis strengen er meget lang, og stakkens størrelse er af 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");

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

Reversering af en streng i JavaScript er en lille og enkel algoritme, der kan stilles på en teknisk telefonscreening eller et teknisk interview. Du kan tage den korte rute for at løse dette problem eller tage fremgangsmåden ved at løse det med rekursion eller endnu mere komplekse løsninger.

Jeg håber, du fandt dette nyttigt. Dette er en del af min "How to Solve FCC Algorithms" -serie om artikler om Free Code Camp Algorithm Challenges, hvor jeg foreslår flere løsninger og forklarer trin for trin, hvad der sker under emhætten.

Tre måder at gentage en streng i JavaScript

I denne artikel vil jeg forklare, hvordan man løser freeCodeCamp's "Gentag en streng gentag en streng" -udfordring. Dette involverer ...

To måder at bekræfte afslutningen på en streng i JavaScript

I denne artikel forklarer jeg, hvordan man løser freeCodeCamp's "Confirm the Ending" -udfordring.

Tre måder at faktorisere et nummer i JavaScript

Denne artikel er baseret på Free Code Camp Basic Algorithm Scripting “Faktoriser et tal”

To måder at kontrollere palindromer i JavaScript

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

Tre måder at finde det længste ord i en streng i JavaScript

Denne artikel er baseret på Free Code Camp Basic Algorithm Scripting "Find det længste ord i en streng".

Tre måder at betegne sag på en sætning i JavaScript

Denne artikel er baseret på Free Code Camp Basic Algorithm Scripting "Titel sag en sætning".

Hvis du har din egen løsning eller forslag, så del dem nedenfor i kommentarerne.

Eller du kan følge mig på Medium , Twitter, Github og LinkedIn lige efter at du har klikket på det grønne hjerte nedenfor ;-)

# StayCurious, # KeepOnHacking & # MakeItHappen!

Ressourcer

  • split () metode - MDN
  • reverse () metode - MDN
  • join () metode - MDN
  • Strenglængde - MDN
  • substr () metode - MDN
  • charAt () metode - MDN