Ctrl K

Куски без общих букв

Средняя
Дана строка text из строчных латинских букв. Разрежьте её на подряд идущие куски так, чтобы каждая буква встречалась не более чем в одном куске: все вхождения одной буквы должны оказаться в одном куске. Кусков должно быть как можно больше. Склеенные по порядку, они дают исходную строку. Верните список длин кусков слева направо.
Пример 1
text="abacdcdefe" → [3, 4, 3]

Куски "aba", "cdcd" и "efe": каждая буква живёт только в одном куске. Мельче не выйдет: например, отрезав "ab", мы разлучили бы две буквы a.

Пример 2
text="xyzzx" → [5]

Буква x стоит в начале и в конце, поэтому вся строка — один кусок.

Пример 3
text="qrs" → [1, 1, 1]
Ограничения
  • 1 ≤ len(text) ≤ 10⁵
  • text состоит из строчных латинских букв
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиПодпоследовательность только одного слова СредняяСпрятанная анаграмма СредняяБез одинаковых соседей СредняяСлово растёт по букве СредняяЗаписка из газетных заголовков Средняя
загружаем Python…
Вход
text="abacdcdefe"
Ожидается
[3, 4, 3]

«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 67 тестов на сервере, включая скрытые.