Ez a cikk a Free Code Camp alapvető algoritmus-szkriptjein alapul, „Fordítsa meg a karakterláncot”
A karakterlánc megfordítása az egyik leggyakrabban feltett JavaScript-kérdés az interjú technikai körében. Az interjúalanyok megkérhetik, hogy írjon különféle módokat a karakterlánc megfordítására, vagy megkérhetik a karakterlánc megfordítására a beépített módszerek használata nélkül, vagy akár egy karakterlánc megfordítását is rekurzióval.
Lehetséges, hogy ennek tízféle módja van, kivéve a beépített fordított funkciót, mivel a JavaScriptnek nincs ilyen.
Az alábbiakban bemutatom a három legérdekesebb módszert a karakterlánc megfordításának problémájának megoldására a JavaScript-ben.
Algoritmus kihívás
Fordítsa meg a megadott karakterláncot.Előfordulhat, hogy a karakterláncot tömbgé kell alakítania, mielőtt megfordíthatja.
Az eredménynek karakterláncnak kell lennie.
function reverseString(str) { return str; } reverseString("hello");
Biztosított tesztesetek
- A reverseString („helló”) „olleh” legyen
- A reverseString („Howdy”) „ydwoH” legyen
- A reverseString („Üdvözlet a Földről”) visszaadja a „htraE morf sgniteerG” kifejezést
1. Fordítsa vissza a karakterláncot beépített funkciókkal
Ehhez a megoldáshoz három módszert fogunk használni: a String.prototype.split () metódust, az Array.prototype.reverse () és az Array.prototype.join () metódust.
- A split () metódus egy String objektumot sztringtömbgé oszt fel azáltal, hogy sztringet sztringekre bontja.
- A fordított () módszer megfordítja a tömböt a helyén. Az első tömbelem lesz az utolsó, az utolsó pedig az első.
- A join () metódus egy tömb összes elemét karaktersorozatba kapcsolja.
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");
A három módszer összekapcsolása:
function reverseString(str) { return str.split("").reverse().join(""); } reverseString("hello");
2. Fordítsa vissza a karakterláncot csökkentő hurokkal
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');
Hozzászólások nélkül:
function reverseString(str) { var newString = ""; for (var i = str.length - 1; i >= 0; i--) { newString += str[i]; } return newString; } reverseString('hello');
3. Fordítsa vissza a karakterláncot rekurzióval
Ehhez a megoldáshoz két módszert fogunk használni: a String.prototype.substr () és a String.prototype.charAt () metódust.
- Az substr () metódus a megadott helyen kezdődő karakterláncokat adja vissza a megadott helyen.
"hello".substr(1); // "ello"
- A charAt () metódus a megadott karaktert adja vissza egy karakterláncból.
"hello".charAt(0); // "h"
A rekurzió mélysége megegyezik a húr hosszával. Ez a megoldás nem a legjobb, és nagyon lassú lesz, ha a húr nagyon hosszú, és a verem nagysága komoly aggodalomra ad okot.
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");
Hozzászólások nélkül:
function reverseString(str) { if (str === "") return ""; else return reverseString(str.substr(1)) + str.charAt(0); } reverseString("hello");
Feltételes (Ternary) üzemeltető:
function reverseString(str) { return (str === '') ? '' : reverseString(str.substr(1)) + str.charAt(0); } reverseString("hello");
A karakterlánc megfordítása a JavaScript-ben egy kicsi és egyszerű algoritmus, amelyet technikai telefonszűrés vagy technikai interjú során lehet feltenni. Röviden járhat a probléma megoldásában, vagy megközelítheti úgy, hogy rekurzióval vagy még összetettebb megoldásokkal oldja meg.
Remélem, hasznosnak találta ezt. Ez része a Free Code Camp Algorithm Challenges című „Hogyan lehet megoldani az FCC algoritmusokat” című cikksorozatomnak, ahol számos megoldást javaslok, és lépésről lépésre elmagyarázom, mi történik a motorháztető alatt.
Három módon ismételhetünk egy karakterláncot a JavaScript-ben
Ebben a cikkben elmagyarázom, hogyan lehet megoldani a freeCodeCamp „Karakterlánc megismétlése sztring megismétlése” kihívását. Ez magában foglalja…
Kétféle módon erősítheti meg a String végét a JavaScript-ben
Ebben a cikkben elmagyarázom, hogyan lehet megoldani a freeCodeCamp „Vége megerősítése” kihívását.
Három módszer a szám ténylegesítésére a JavaScript-ben
Ez a cikk a Free Code Camp algoritmus-szkriptjein alapszik: „Számok ténylegesítése”
Kétféleképpen ellenőrizheti a Palindromokat a JavaScript-ben
Ez a cikk a Free Code Camp Basic Algorithm Scripting „Palindromes ellenőrzése” alapján készült.
Három módszer a leghosszabb szó megkeresésére egy stringben a JavaScript-ben
Ez a cikk a Free Code Camp alapvető algoritmus-szkriptjein alapul: „Keresse meg a leghosszabb szót egy karakterláncban”.
Három módszer a mondat elnevezésére a JavaScript-ben
Ez a cikk a „Free Code Camp Basic Algorithm Scripting“ Title Case a Sentence ”szkripteken alapul.
Ha van saját megoldása vagy javaslata, ossza meg őket alább a megjegyzésekben.
Vagy akkor utánam a Medium , Twitter, GitHub és LinkedIn , jobb kattintás után a zöld szívében alábbi ;-)
#StayCurious, #KeepOnHacking & #MakeItHappen!
Resources
- split() method — MDN
- reverse() method — MDN
- join() method — MDN
- String.length — MDN
- substr() method — MDN
- charAt() method — MDN