Ctrl K

Три буквы без тройных повторов

Средняя
Есть count_a букв a, count_b букв b и count_c букв c. Из них выкладывают строку по одной букве, и в строке нигде не должно быть трёх одинаковых букв подряд. Строку строят жадно, по шагам: 1. Среди букв, которые ещё остались, берём ту, которой осталось больше всего. При равенстве — ту, что раньше по алфавиту. 2. Если она дала бы три одинаковые буквы подряд, вместо неё берём лучшую по тому же правилу среди остальных оставшихся букв. Если других букв не осталось, строка готова. 3. Ставим выбранную букву в конец строки и повторяем, пока буквы не кончатся. Верните получившуюся строку. Подумайте, почему эта жадная стратегия даёт строку максимально возможной длины.
Пример 1
count_a=1, count_b=1, count_c=5 → 'ccaccbc'

Ставим "cc", третья c запрещена — берём a (у a и b поровну, a раньше по алфавиту). Дальше снова "cc", затем b и последняя c.

Пример 2
count_a=0, count_b=6, count_c=1 → 'bbcbb'

После "bbcbb" осталась только b, а третья подряд b запрещена — строка заканчивается, две b остаются неиспользованными.

Пример 3
count_a=2, count_b=2, count_c=2 → 'abcabc'
Ограничения
  • 0 ≤ count_a, count_b, count_c ≤ 100
  • count_a + count_b + count_c > 0
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиБез одинаковых соседей СредняяНаибольшая строка без длинных повторов СредняяЗаполнить пропуски с минимумом повторов СредняяЗвёздочки стирают меньшие буквы СредняяОдинаковые буквы на расстоянии Сложная
загружаем Python…
Вход
count_a=1, count_b=1, count_c=5
Ожидается
'ccaccbc'

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