Друзья, публикуем эталонное простое решение (O(n), один проход): def compress(s: str) -> str: if not s: return s res = [] count = 1 for i in range(1, len(s)): if s[i] == s[i - 1]: count += 1 else: res.append(s[i - 1] + str(count)) count = 1 # последний блок res.append(s[-1] + str(count)) compressed = "".join(res) return compressed if len(compressed) < len(s) else s 🧠 Суть решения: •идём по строке один раз •считаем подряд идущие символы •собираем результат в список (не строку — важно для скорости) •в конце сравниваем длины
Друзья, публикуем эталонное простое решение (O(n), один проход
27 апреля27 апр
~1 мин