Kolm viisi stringide ümberpööramiseks JavaScriptis

See artikkel põhineb Free Code Campi algoritmi skriptimisel „Stringi ümberpööramine”

Stringi ümberpööramine on intervjuu tehnilises voorus üks kõige sagedamini esitatav JavaScripti küsimus. Intervjueerijad võivad paluda teil kirjutada stringi tagasivõtmiseks erinevaid viise või paluda teil stringi ümber pöörata ilma sisseehitatud meetodeid kasutamata või isegi paluda teil stringi pöörata rekursiooni abil.

Selle tegemiseks on potentsiaalselt kümneid erinevaid viise, välja arvatud sisseehitatud vastupidine funktsioon, kuna JavaScripti seda pole.

Allpool on minu kolm kõige huvitavamat viisi, kuidas JavaScripti stringi tagurdamine probleemi lahendada.

Algoritmi väljakutse

Tagurpidi antud string.

Enne selle ümberpööramist peate võib-olla muutma stringi massiiviks.

Teie tulemus peab olema string.

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

Pakutakse testjuhtumeid

  • reverseString ("tere") peaks saama "olleh"
  • reverseString (“Howdy”) peaks saama “ydwoH”
  • reverseString („Tervitused Maalt”) peaks tagastama „htraE morf sgniteerG”

1. Pöörake sisseehitatud funktsioonidega string

Selle lahenduse jaoks kasutame kolme meetodit: meetod String.prototype.split (), meetod Array.prototype.reverse () ja Array.prototype.join ().

  • Split () meetod jagab stringi objekti stringi massiiviks, eraldades stringi alamstringideks.
  • Reverse () meetod muudab massiivi oma kohale. Esimesest massiivi elemendist saab viimane ja viimasest esimene.
  • Join () meetod ühendab massiivi kõik elemendid stringiks.
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");

Kolm meetodit kokku aheldada:

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

2. Pöörake stringi kahandava silmuse jaoks

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

Kommentaarideta:

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

3. Pöörake rekursiooniga string tagasi

Selle lahenduse jaoks kasutame kahte meetodit: meetodit String.prototype.substr () ja String.prototype.charAt ().

  • Meetod substr () tagastab stringi tähemärgid, mis algavad määratud asukohast määratud arvu märkide kaudu.
"hello".substr(1); // "ello"
  • Meetod charAt () tagastab stringist määratud märgi.
"hello".charAt(0); // "h"

Rekursiooni sügavus võrdub Stringi pikkusega. See lahendus pole parim ja on tõesti aeglane, kui string on väga pikk ja virna suurus on suur probleem.

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

Kommentaarideta:

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

Tingimuslik (kolmepoolne) operaator:

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

Stringi tagasikäik JavaScripti abil on väike ja lihtne algoritm, mida saab küsida telefoni tehnilisel ekraanil või tehnilises intervjuus. Võite selle probleemi lahendamiseks minna lühikese tee või läheneda sellele rekursiooni või veelgi keerukamate lahendustega.

Loodetavasti leidsite sellest abi. See on osa minu artiklist "Kuidas lahendada FCC algoritme" Free Code Camp Algorithm Challenges, kus pakun välja mitu lahendust ja selgitan samm-sammult, mis kapoti all toimub.

Kolm viisi stringi kordamiseks JavaScriptis

Selles artiklis selgitan, kuidas lahendada freeCodeCampi väljakutse "Korda stringi kordus string". See hõlmab…

Kaks võimalust Stringi lõppu kinnitada JavaScriptis

Selles artiklis selgitan, kuidas lahendada freeCodeCampi väljakutse “Kinnita lõppu”.

Kolm viisi, kuidas arv JavaScript JavaScriptis kindlaks teha

See artikkel põhineb Free Code Campi algoritmide skriptimisel “Arvu faktoreerimine”

Kaks viisi palindroomide kontrollimiseks JavaScripti abil

See artikkel põhineb Free Code Campi algoritmi skriptimisel „Kontrolli palindroome”.

Kolm viisi, kuidas leida JavaScripti stringi kõige pikem sõna

See artikkel põhineb Free Code Campi algoritmide skriptimisel „Leidke stringi pikim sõna”.

Kolm viisi, kuidas JavaScripti laused pealkirjastada

See artikkel põhineb Free Code Campi algoritmide skriptimisel "Pealkirja juhtum lause".

Kui teil on oma lahendus või ettepanekuid, jagage neid allpool kommentaarides.

Või saate jälgida mind Medium , Twitter, Github ja LinkedIn , kohe pärast klõpsate roheline süda allpool ;-)

# StayCurious, # KeepOnHacking & # MakeItHappen!

Ressursid

  • split () meetod - MDN
  • pöörd () meetod - MDN
  • liitu () meetod - MDN
  • String.length - MDN
  • subst () meetod - MDN
  • charAt () meetod - MDN