В этой статье я объясню, как решить FreeCodeCamp’s « повторить строку повторить строку » вызов. Это включает в себя повторение строки определенное количество раз.
Есть три подхода, я охвативших:
- Использование цикла в то время
- используя рекурсию
- Использование метода ES6 Repeat ()
Описание проблем алгоритма
function repeatStringNumTimes(str, num) {
return str;
}
repeatStringNumTimes("abc", 3);Предоставил тестовые случаи
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: повторите строку с циклом
Оператор Whae выполняет свое утверждение до тех пор, пока указанное условие оценивается к true.
А пока оператор выглядит так:
while (condition) statement
с условием, которое оценивается перед каждым проходом через петлю. Если условие верно, оператор выполняется. Если условие является ложным, выполнение продолжается с любом оператором после цикла While.
Заявление выполняется до тех пор, пока состояние верно. Вот решение:
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);И снова, без комментариев:
function repeatStringNumTimes(string, times) {
var repeatedString = "";
while (times > 0) {
repeatedString += string;
times--;
}
return repeatedString;
}
repeatStringNumTimes("abc", 3);Подход № 2: повторите строку с помощью условного и рекурсии
Рекурсия – это методика для итерации по эксплуатации, имея функцию, позвоните себе неоднократно, пока она не прибудет в результате. Существует несколько ключевых функций рекурсии, которые должны быть включены для того, чтобы он был правильно работать.
- Первый – это Базовый чехол : Это утверждение, как правило, в пределах условного пункта, такого
Если, это останавливает рекурсию. - Второй – это Рекурсивный случай : Это утверждение, где вызывается рекурсивная функция.
Вот решение:
function repeatStringNumTimes(string, times) {
// Step 1. Check if times is negative and return an empty string if true
if (times < 0) {
return "";
}
// Step 2. Check if times equals to 1 and return the string itself if it's the case.
if (times === 1) {
return string;
}
// Step 3. Use recursion
else {
return string + repeatStringNumTimes(string, times - 1); // return "abcabcabc";
}
/*
First Part of the recursion method
You need to remember that you won't have just one call, you'll have several nested calls
times string + repeatStringNumTimes(string, times - 1)
1st call 3 "abc" + ("abc", 3 - 1)
2nd call 2 "abc" + ("abc", 2 - 1)
3rd call 1 "abc" => 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);И снова, без комментариев:
function repeatStringNumTimes(string, times) {
if(times < 0)
return "";
if(times === 1)
return string;
else
return string + repeatStringNumTimes(string, times - 1);
}
repeatStringNumTimes("abc", 3);Подход № 3: Повторите строку с помощью Repeate ES6 () метод
Для этого решения вы будете использовать String.Prototype.repeat () Метод:
- повторить () Метод конструкции и возвращает новую строку, которая содержит указанное количество копий строки, на котором его называли, объединенные вместе.
Вот решение:
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);И снова, без комментариев:
function repeatStringNumTimes(string, times) {
if (times > 0)
return string.repeat(times);
else
return "";
}
repeatStringNumTimes("abc", 3);Вы можете использовать Темнарный оператор Как ярлык для оператора IF/Evel, как это:
times > 0 ? string.repeat(times) : "";
Это можно прочитать как:
if (times > 0) {
return string.repeat(times);
} else {
return "";
}Затем вы можете вернуть тройной оператор в вашей функции:
Я надеюсь, что вы нашли это полезным. Это является частью моего «Как решить серию статей» в серии статей «Алгоритм FCC» о проблемах алгоритма FreeCodeCamp, где я предлагаю несколько решений и объяснить пошаговый шаг, что происходит под капотом.
Два способа подтвердить окончание строки в JavaScript В этой статье я объясню, как решить «подтвердить конец» FreeCodeCamm.
Три способа изменить строку в JavaScript Эта статья основана на бесплатном кодовом лагере основных алгоритма сценариев «обратная строка»
Три способа активизировать число в JavaScript Эта статья основана на Бесплатный код Camp Camp Basic Algorith Scripting “Factorialize ряд”
Два способа проверить палиндромы в JavaScript Эта статья основана на бесплатном кодовом лагере основных алгоритма сценариев «Проверить палиндромы».
Три способа найти самое длинное слово в строке в JavaScript Эта статья основана на бесплатном кодовом лагере основных сценариев алгоритма «Найти самое длинное слово в строке».
Три пути к названию Case Предложение в JavaScript Эта статья основана на бесплатном кодовом лагере основных алгоритма сценариев «Заглавное дело».
Если у вас есть собственное решение или какие-либо предложения, поделитесь их ниже в комментариях.
Или вы можете следовать за мной на Средний , Twitter , Github и LinkedIn , сразу после нажатия зеленого сердца ниже 😉
# StaySured, # KeepOnhacking & # Masteithappen!
Дополнительные ресурсы
Оригинал: “https://www.freecodecamp.org/news/three-ways-to-repeat-a-string-in-javascript-2a9053b93a2d/”