Trīs veidi, kā mainīt virkni JavaScript

Šis raksts ir balstīts uz Free Code Camp pamata algoritma skriptu “Stīgas apgriešana”

Virknes maiņa ir viens no visbiežāk uzdotajiem JavaScript jautājumiem intervijas tehniskajā kārtā. Intervētāji var lūgt jūs rakstīt dažādus veidus, kā mainīt virkni, vai arī viņi var lūgt jūs mainīt virkni, neizmantojot iebūvētas metodes, vai pat lūgt jūs mainīt virkni, izmantojot rekursiju.

Iespējams, ka ir desmitiem dažādu veidu, kā to izdarīt, izņemot iebūvēto reverso funkciju, jo JavaScript tādas nav.

Tālāk ir minēti mani trīs interesantākie veidi, kā atrisināt virknes maiņas problēmu JavaScript.

Algoritma izaicinājums

Apgrieziet norādīto virkni otrādi.

Jums var būt nepieciešams pārvērst virkni masīvā, pirms varat to mainīt.

Jūsu rezultātam ir jābūt virknei.

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

Nodrošināti pārbaudes gadījumi

  • reverseString (“labdien”) jākļūst par “olleh”
  • reverseString (“Howdy”) jākļūst par “ydwoH”
  • reverseString (“Sveicieni no Zemes”) jāatgriež “htraE morf sgniteerG”

1. Apgrieziet virkni ar iebūvētām funkcijām

Šim risinājumam mēs izmantosim trīs metodes: metodi String.prototype.split (), Array.prototype.reverse () un Array.prototype.join ().

  • Split () metode sadala String objektu virknes masīvā, atdalot virkni apakšstingrās.
  • Reversā () metode maina masīvu vietā. Pirmais masīva elements kļūst par pēdējo, bet pēdējais - par pirmo.
  • Join () metode visus masīva elementus apvieno virknē.
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");

Ķēdes trīs metodes kopā:

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

2. Apgrieziet virkni ar samazinošu cilpu

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

Bez komentāriem:

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

3. Apgrieziet virkni ar rekursiju

Šim risinājumam mēs izmantosim divas metodes: metodi String.prototype.substr () un metodi String.prototype.charAt ().

  • Metode substr () atgriež rakstzīmes virknē, kas sākas noteiktā vietā, izmantojot norādīto rakstzīmju skaitu.
"hello".substr(1); // "ello"
  • Metode charAt () atgriež norādīto rakstzīmi no virknes.
"hello".charAt(0); // "h"

Rekursijas dziļums ir vienāds ar virknes garumu. Šis risinājums nav labākais un būs ļoti lēns, ja virkne ir ļoti gara un kaudzes lielums rada lielas bažas.

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

Bez komentāriem:

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

Nosacītais (trīskāršais) operators:

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

Virknes maiņa JavaScript valodā ir mazs un vienkāršs algoritms, ko var uzdot tālruņa tehniskajā pārbaudē vai tehniskajā intervijā. Jūs varētu izvēlēties īso maršrutu šīs problēmas risināšanā vai izmantot pieeju, atrisinot to ar rekursiju vai pat sarežģītākiem risinājumiem.

Es ceru, ka jums tas noderēja. Šī ir daļa no manas rakstu sērijas “Kā atrisināt FCC algoritmus” par brīvā koda nometnes algoritma izaicinājumiem, kur es piedāvāju vairākus risinājumus un soli pa solim izskaidroju, kas notiek zem pārsega.

Trīs veidi, kā atkārtot virkni JavaScript

Šajā rakstā es paskaidrošu, kā atrisināt freeCodeCamp izaicinājumu “Atkārtot virkni atkārtot virkni”. Tas ietver…

Divi veidi, kā apstiprināt virknes beigas JavaScript

Šajā rakstā es paskaidrošu, kā atrisināt freeCodeCamp izaicinājumu “Apstiprināt beigas”.

Trīs veidi, kā JavaScript noteikt skaitli

Šis raksts ir balstīts uz Free Code Camp pamata algoritma skriptu “Skaitļa faktorizēšana”

Divi veidi, kā JavaScript pārbaudīt palindromus

Šis raksts ir balstīts uz Free Code Camp pamata algoritmu skriptu “Palindromu pārbaude”.

Trīs veidi, kā atrast garāko vārdu virknē JavaScript

Šis raksts ir balstīts uz Free Code Camp pamata algoritma skriptu “Atrodiet garāko vārdu virknē”.

Trīs veidi, kā JavaScript ierakstīt teikumu

Šis raksts ir balstīts uz Free Code Camp pamata algoritma skriptu “Nosaukums, kurā teikums ir teikums”.

Ja jums ir savs risinājums vai kādi ieteikumi, kopīgojiet tos zemāk komentāros.

Vai arī jūs varat sekot man vietnē Medium , Twitter, Github un LinkedIn tūlīt pēc noklikšķināšanas uz zemāk redzamās zaļās sirds ;-)

# StayCurious, # KeepOnHacking un # MakeItHappen!

Resursi

  • split () metode - MDN
  • reverse () metode - MDN
  • pievienošanās () metode - MDN
  • Stīgu garums - MDN
  • substr () metode - MDN
  • charAt () metode - MDN