Сложность: medium
Последовательность "считай и скажи" (
countAndSay) строится рекурсивно: -
countAndSay(1) = "1" -
countAndSay(n) — это кодирование длин серий из countAndSay(n - 1). Пример кодирования длин серий (
RLE): -
"3322251" → "23321511" Для заданного
n верните n-й элемент последовательности. Пример:
Input: n = 4
Output: "1211"
👨💻 Алгоритм:
1⃣Начать с
s = "1". 2⃣Для каждого шага
n-1 раз: - Пройти по
s, группируя одинаковые символы. - Для каждой группы записать количество и сам символ.
- Обновить
s. 3⃣Вернуть итоговую строку.
😎 Решение:
public class Solution {
public string CountAndSay(int n) {
string s = "1";
for (int i = 0; i < n - 1; i++) {
StringBuilder current = new StringBuilder();
for (int j = 0; j < s.Length; j++) {
int count = 1;
while (j < s.Length - 1 && s[j] == s[j + 1]) {
j++;
count++;
}
current.Append(count).Append(s[j]);
}
s = current.ToString();
}
return s;
}
}Ставь 👍 и забирай 📚 Базу знаний