Kolme tapaa kääntää merkkijono JavaScriptissä

Tämä artikkeli perustuu Free Code Camp Basic Algorithm Scripting "Käänteinen merkkijono"

Merkkijonon kääntäminen on yksi haastattelun teknisellä kierroksella eniten kysyttyjä JavaScript-kysymyksiä. Haastattelijat voivat pyytää sinua kirjoittamaan eri tapoja merkkijonon kääntämiseksi, tai he saattavat pyytää sinua kääntämään merkkijonon kääntämättä käyttämättä sisäänrakennettuja menetelmiä tai voivat jopa pyytää sinua kääntämään merkkijonon rekursiota käyttämällä.

Mahdollisesti on kymmeniä eri tapoja, lukuun ottamatta sisäänrakennettua peruutustoimintoa , koska JavaScriptillä ei ole sellaista.

Alla on kolme mielenkiintoisinta tapaa ratkaista merkkijonon kääntäminen JavaScriptissä.

Algoritmihaaste

Käännä mukana toimitettu merkkijono.

Sinun on ehkä muutettava merkkijono matriisiksi, ennen kuin voit muuttaa sen.

Tuloksesi on oltava merkkijono.

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

Annetut testitapaukset

  • reverseStringistä ("hei") tulisi tulla "olleh"
  • reverseString (“Howdy”) tulisi olla ”ydwoH”
  • reverseString (“Tervehdyksiä maalta”) pitäisi palauttaa ”htraE morf sgniteerG”

1. Käännä merkkijono sisäänrakennetuilla toiminnoilla

Tässä ratkaisussa käytämme kolmea menetelmää: String.prototype.split () -menetelmä, Array.prototype.reverse () -menetelmä ja Array.prototype.join () -menetelmä.

  • Split () -menetelmä jakaa String-objektin merkkijonoryhmäksi erottamalla merkkijonon alamerkkijonoiksi.
  • Käänteinen () -menetelmä kääntää matriisin paikalleen. Ensimmäisestä taulukkoelementistä tulee viimeinen ja viimeisestä ensimmäinen.
  • Join () -menetelmä yhdistää kaikki matriisin elementit merkkijonoksi.
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");

Ketjua kolme menetelmää yhteen:

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

2. Käännä merkkijono, jossa on silmukan vähennys

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

Ilman kommentteja:

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

3. Käännä merkkijono, jossa on rekursio

Tässä ratkaisussa käytämme kahta menetelmää: String.prototype.substr () -menetelmää ja String.prototype.charAt () -menetelmää.

  • Substrumentti () palauttaa merkkijonon merkit määritetystä sijainnista alkaen määritetyn määrän merkkejä.
"hello".substr(1); // "ello"
  • CharAt () -menetelmä palauttaa määritetyn merkin merkkijonosta.
"hello".charAt(0); // "h"

Rekursio on sama kuin merkkijono. Tämä ratkaisu ei ole paras ja on todella hidas, jos merkkijono on hyvin pitkä ja pinon koko on erittäin huolestuttava.

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

Ilman kommentteja:

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

Ehdollinen operaattori:

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

Merkkijonon kääntäminen JavaScriptissä on pieni ja yksinkertainen algoritmi, jota voidaan pyytää puhelimen teknisessä seulonnassa tai teknisessä haastattelussa. Voit ratkaista tämän ongelman lyhyellä reitillä tai lähestyä ratkaisemalla sen rekursiolla tai jopa monimutkaisemmilla ratkaisuilla.

Toivottavasti pidit tästä hyödyllisenä. Tämä on osa artikkeliani "How to Solve FCC Algorithms" Free Code Camp Algorithm Challenges -sarjasta, jossa ehdotan useita ratkaisuja ja selitän askel askeleelta, mitä hupun alla tapahtuu.

Kolme tapaa toistaa merkkijono JavaScriptissä

Tässä artikkelissa selitän kuinka ratkaista freeCodeCampin ”Toista merkkijono toista merkkijono” -haaste. Tähän sisältyy…

Kaksi tapaa vahvistaa merkkijono loppu JavaScriptissä

Tässä artikkelissa selitän kuinka ratkaista freeCodeCampin ”Vahvista loppu” -haaste.

Kolme tapaa laskea JavaScript JavaScriptiin

Tämä artikkeli perustuu Free Code Camp Basic Algorithm Scripting "Factorialize a Number"

Kaksi tapaa tarkistaa palindromit JavaScriptissä

Tämä artikkeli perustuu Free Code Camp Basic Algorithm Scripting "Check for Palindromes" -ohjelmaan.

Kolme tapaa löytää pisin sana merkkijonossa JavaScriptissä

Tämä artikkeli perustuu Free Code Camp Basic Algorithm Scripting "Etsi pisin sana merkkijonosta".

Kolme tapaa nimetä lause lause JavaScriptin

Tämä artikkeli perustuu Free Code Camp Basic Algorithm Scripting "Title Case a Sentence" -sarjaan.

Jos sinulla on oma ratkaisusi tai ehdotuksia, jaa ne alla kommenteissa.

Tai voit seurata minua Mediumissa , Twitterissä, Githubissa ja LinkedInissä heti, kun napsautat vihreää sydäntä alla ;-)

# StayCurious, # KeepOnHacking & # MakeItHappen!

Resurssit

  • split () menetelmä - MDN
  • käänteinen () menetelmä - MDN
  • join () menetelmä - MDN
  • Merkkijono. Pituus - MDN
  • subst () -menetelmä - MDN
  • charAt () -menetelmä - MDN