Сложность: medium
Последовательность count-and-say — это последовательность строк, определяемая рекурсивно:
countAndSay(1) =
"1" countAndSay(n) — это проговаривание предыдущей строки: сколько подряд идущих одинаковых символов, и какой символ.
Пример:
Input: n = 4
Output: "1211"
👨💻 Алгоритм:
1️⃣Если
n = 1, вернуть "1" — это базовый случай. 2️⃣Инициализировать строку
temp = "1" — с неё всё начинается. 3️⃣Для
i от 2 до n: - Пройти по строке
temp, считая подряд одинаковые символы - Когда символ меняется — добавить в строку
ans количество + символ - В конце каждой итерации:
temp = ans, ans = "" 😎 Решение:
class Solution {
countAndSay(n) {
if (n === 1) return "1";
let temp = "1";
let ans = "";
for (let i = 2; i <= n; i++) {
let cnt = 1;
let prev = temp[0];
for (let j = 1; j < temp.length; j++) {
const char = temp[j];
if (char === prev) {
cnt++;
} else {
ans += cnt.toString() + prev;
prev = char;
cnt = 1;
}
}
ans += cnt.toString() + prev;
temp = ans;
ans = "";
}
return temp;
}
}Ставь 👍 и забирай 📚 Базу знаний
