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 egy karakterlánc bizonyos számú ismétlését.
Három megközelítést tárgyalok:
- egy darab hurok segítségével
- rekurzió segítségével
- ES6 ismétlés () módszerrel
Az algoritmus kihívás leírása
Ismételje meg az adott karakterláncot (első argumentum)num
egyszer (második argumentum). Ha num
nem pozitív szám, adjon meg egy üres karakterláncot .
function repeatStringNumTimes(str, num) { return str; } repeatStringNumTimes("abc", 3);
Biztosított tesztesetek
repeatStringNumTimes("*", 3) should return "***". repeatStringNumTimes("abc", 3) should return "abcabcabc". repeatStringNumTimes("abc", 4) should return "abcabcabcabc". repeatStringNumTimes("abc", 1) should return "abc". repeatStringNumTimes("*", 8) should return "********". repeatStringNumTimes("abc", -2) should return "".
1. megközelítés: Ismételje meg a karakterláncot egy hurokkal
A while utasítás végrehajtja az utasítását, amíg egy megadott feltétel igaznak értékeli.
Egy ideig a kijelentés így néz ki:
while (condition) statement
egy olyan feltétellel, amelyet kiértékelnek a hurok minden egyes áthaladása előtt. Ha a feltétel igaz, akkor az utasítás végrehajtásra kerül. Ha a feltétel hamis, a végrehajtás bármely utasítással folytatódik a while ciklus után.
Az utasítás addig hajtódik végre, amíg a feltétel igaz. Itt van a megoldás:
function repeatStringNumTimes(string, times) { // Step 1. Create an empty string that will host the repeated string var repeatedString = ""; // Step 2. Set the While loop with (times > 0) as the condition to check while (times > 0) { // As long as times is greater than 0, the statement is executed // The statement repeatedString += string; // Same as repeatedString = repeatedString + string; times--; // Same as times = times - 1; } /* While loop logic Condition T/F repeatedString += string repeatedString times First iteration (3 > 0) true "" + "abc" "abc" 2 Second iteration (2 > 0) true "abc" + "abc" "abcabc" 1 Third iteration (1 > 0) true "abcabc" + "abc" "abcabcabc" 0 Fourth iteration (0 > 0) false } */ // Step 3. Return the repeated string return repeatedString; // "abcabcabc" } repeatStringNumTimes("abc", 3);
És még egyszer, megjegyzések nélkül:
function repeatStringNumTimes(string, times) { var repeatedString = ""; while (times > 0) { repeatedString += string; times--; } return repeatedString; } repeatStringNumTimes("abc", 3);
2. megközelítés: Ismételje meg a karakterláncot egy feltételes és rekurzió használatával
A rekurzió egy művelet ismétlési technikája azáltal, hogy egy függvény ismételten meghívja magát, amíg el nem éri az eredményt. A rekurziónak néhány kulcsfontosságú jellemzője szerepel, amelyeket a megfelelő működés érdekében be kell illeszteni.
- Az első egy alapeset : ez egy olyan utasítás, általában egy feltételes záradékban, mint például
if
, amely megállítja a rekurziót. - A második rekurzív eset : ez az az állítás, ahol a rekurzív függvényt magára hívja.
Itt van a megoldás:
function repeatStringNumTimes(string, times) { // Step 1. Check if times is negative and return an empty string if true if (times if (times === 1) return string; 4th call 0 "" => if (times <= 0) return ""; Second part of the recursion method 4th call will return "" 3rd call will return "abc" 2nd call will return "abc" 1st call will return "abc" The final call is a concatenation of all the strings return "abc" + "abc" + "abc"; // return "abcabcabc"; */ } repeatStringNumTimes("abc", 3);
És még egyszer, megjegyzések nélkül:
function repeatStringNumTimes(string, times) { if(times < 0) return ""; if(times === 1) return string; else return string + repeatStringNumTimes(string, times - 1); } repeatStringNumTimes("abc", 3);
3. megközelítés: Ismételje meg a karakterláncot az ES6 repeat () módszerrel
Ehhez a megoldáshoz a String.prototype.repeat () metódust fogja használni:
- A
repeat()
metódus egy új karakterláncot készít és ad vissza, amely tartalmazza a megadott számú példányt a stringből, amelyre hívták, összefűzve.
Itt van a megoldás:
function repeatStringNumTimes(string, times) { //Step 1. If times is positive, return the repeated string if (times > 0) { // (3 > 0) => true return string.repeat(times); // return "abc".repeat(3); => return "abcabcabc"; } //Step 2. Else if times is negative, return an empty string if true else { return ""; } } repeatStringNumTimes("abc", 3);
És még egyszer, megjegyzések nélkül:
function repeatStringNumTimes(string, times) { if (times > 0) return string.repeat(times); else return ""; } repeatStringNumTimes("abc", 3);
A ternary operátort használhatja az if / else utasítás parancsikonjaként, így:
times > 0 ? string.repeat(times) : "";
Ez így olvasható:
if (times > 0) { return string.repeat(times); } else { return ""; }
Ezután visszaadhatja a háromszintű operátort a függvényében:
Remélem, hasznosnak találta ezt. Ez része a freeCodeCamp 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.
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 karakterlánc megfordítására a JavaScript-ben
Ez a cikk a Free Code Camp algoritmus-szkriptjein alapul, „Fordítsa meg a karakterláncot”
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éle módja annak, hogy ellenőrizze 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 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 ”címen 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 és # MakeItHappen!
További források
- míg hurok - MDN
- ismétlés () módszer - MDN
- rekurzió - MDN
- Ternary Operator - MDN