In diesem Artikel werde ich erklären, wie Sie die Herausforderung "Wiederholen eines Strings, Wiederholen eines Strings " von freeCodeCamp lösen . Dabei wird eine Zeichenfolge eine bestimmte Anzahl von Malen wiederholt.
Es gibt drei Ansätze, die ich behandeln werde:
- mit einer while-Schleife
- mit Rekursion
- mit der ES6 repeat () Methode
Die Beschreibung der Algorithmus-Herausforderung
Wiederholen Sie eine bestimmte Zeichenfolge (erstes Argument)num
mal (zweites Argument). Gibt eine leere Zeichenfolge zurück, wenn num
es sich nicht um eine positive Zahl handelt.function repeatStringNumTimes(str, num) { return str; } repeatStringNumTimes("abc", 3);
Bereitgestellte Testfälle
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 "".
Ansatz 1: Wiederholen Sie einen String mit einer While-Schleife
Eine while-Anweisung führt ihre Anweisung aus, solange eine angegebene Bedingung als wahr ausgewertet wird.
Eine while-Anweisung sieht folgendermaßen aus:
while (condition) statement
mit einer Bedingung, die vor jedem Durchlauf durch die Schleife ausgewertet wird. Wenn die Bedingung erfüllt ist, wird die Anweisung ausgeführt. Wenn die Bedingung falsch ist, wird die Ausführung mit einer Anweisung nach der while-Schleife fortgesetzt.
Die Anweisung wird ausgeführt, solange die Bedingung erfüllt ist. Hier ist die Lösung:
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);
Und wieder ohne Kommentare:
function repeatStringNumTimes(string, times) { var repeatedString = ""; while (times > 0) { repeatedString += string; times--; } return repeatedString; } repeatStringNumTimes("abc", 3);
Ansatz 2: Wiederholen Sie eine Zeichenfolge mit einer Bedingung und einer Rekursion
Rekursion ist eine Technik zum Durchlaufen einer Operation, indem ein Funktionsaufruf wiederholt ausgeführt wird, bis ein Ergebnis erzielt wird. Es gibt einige wichtige Merkmale der Rekursion, die enthalten sein müssen, damit sie ordnungsgemäß funktioniert.
- Der erste ist ein Basisfall : Dies ist eine Anweisung, normalerweise innerhalb einer Bedingungsklausel wie
if
, die die Rekursion stoppt. - Der zweite ist ein rekursiver Fall : Dies ist die Anweisung, bei der die rekursive Funktion für sich selbst aufgerufen wird.
Hier ist die Lösung:
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);
Und wieder ohne Kommentare:
function repeatStringNumTimes(string, times) { if(times < 0) return ""; if(times === 1) return string; else return string + repeatStringNumTimes(string, times - 1); } repeatStringNumTimes("abc", 3);
Ansatz 3: Wiederholen Sie einen String mit der ES6-Methode repeat ()
Für diese Lösung verwenden Sie die Methode String.prototype.repeat ():
- Die
repeat()
Methode erstellt eine neue Zeichenfolge, die die angegebene Anzahl von Kopien der Zeichenfolge enthält, für die sie aufgerufen wurde, und gibt sie zusammen.
Hier ist die Lösung:
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);
Und wieder ohne Kommentare:
function repeatStringNumTimes(string, times) { if (times > 0) return string.repeat(times); else return ""; } repeatStringNumTimes("abc", 3);
Sie können einen ternären Operator als Verknüpfung für die if / else-Anweisung verwenden:
times > 0 ? string.repeat(times) : "";
Dies kann gelesen werden als:
if (times > 0) { return string.repeat(times); } else { return ""; }
Sie können dann den ternären Operator in Ihrer Funktion zurückgeben:
Ich hoffe, Sie fanden das hilfreich. Dies ist Teil meiner Artikelserie „Wie man FCC-Algorithmen löst“ zu den Herausforderungen des freeCodeCamp-Algorithmus, in der ich verschiedene Lösungen vorschlage und Schritt für Schritt erkläre, was unter der Haube passiert.
Zwei Möglichkeiten, um das Ende eines Strings in JavaScript zu bestätigen
In diesem Artikel werde ich erklären, wie Sie die Herausforderung „Confirm the Ending“ von freeCodeCamp lösen können.
Drei Möglichkeiten, einen String in JavaScript umzukehren
Dieser Artikel basiert auf dem Free Algorithmus Camp Basic Algorithm Scripting „Reverse a String“.
Drei Möglichkeiten, eine Zahl in JavaScript zu faktorisieren
Dieser Artikel basiert auf dem Free Algorithmus Camp Basic Algorithm Scripting „Factorialize a Number“.
Zwei Möglichkeiten, in JavaScript nach Palindromen zu suchen
Dieser Artikel basiert auf dem Free Code Camp Basic Algorithm Scripting „Auf Palindrome prüfen“.
Drei Möglichkeiten, das längste Wort in einer Zeichenfolge in JavaScript zu finden
This article is based on Free Code Camp Basic Algorithm Scripting “Find the Longest Word in a String”.
Three Ways to Title Case a Sentence in JavaScript
This article is based on Free Code Camp Basic Algorithm Scripting “Title Case a Sentence”.
If you have your own solution or any suggestions, share them below in the comments.
Or you can follow me on Medium, Twitter, Github and LinkedIn, right after you click the green heart below ;-)
#StayCurious, #KeepOnHacking & #MakeItHappen!
Additional Resources
- while loop — MDN
- repeat() method — MDN
- recursion — MDN
- Ternary Operator — MDN