Сложность medium
Последовательность "считай и скажи" определяется рекурсивно:
-
countAndSay(1) = "1" -
countAndSay(n) — это кодирование длин серий (RLE) из countAndSay(n - 1). Пример:
Input: n = 4
Output: "1211"
👨💻 Алгоритм:
1⃣Начинаем с
"1" и итеративно строим последовательность до n. 2⃣Используем
Regex для поиска повторяющихся символов ((.)\1*). 3⃣Формируем новую строку, записывая длину каждой группы символов и сам символ.
😎 Решение:
class Solution {
fun countAndSay(n: Int): String {
var s = "1"
for (i in 2..n) {
var t = ""
val regex = Regex("(.)\\1*")
regex.findAll(s).forEach { match ->
t += "${match.value.length}${match.value[0]}"
}
s = t
}
return s
}
}Ставь 👍 и забирай 📚 Базу знаний
