Ctrl K

Без одинаковых соседей

Средняя
Дана строка text из строчных латинских букв. Нужно переставить её буквы так, чтобы никакие две соседние буквы не совпадали. Если это невозможно, верните пустую строку "". Подходящих перестановок обычно много, поэтому постройте вот эту: 1. Выстройте буквы в очередь: сначала все копии самой частой буквы, затем следующей по частоте и так далее. Если буквы встречаются одинаково часто, раньше идёт та, что раньше впервые появляется в text. 2. Раздавайте буквы из очереди по позициям 0, 2, 4, …, а когда чётные позиции закончатся — по позициям 1, 3, 5, …. Верните получившуюся строку. Подумайте, при каком условии перестановка невозможна и почему в остальных случаях такая раскладка не ставит одинаковые буквы рядом.
Пример 1
text="moon" → 'omon'

Очередь: o, o (самая частая), затем m и n в порядке первого появления. Позиции 0 и 2 получают o, позиции 1 и 3 — m и n: omon.

Пример 2
text="zzzy" → ''

Три буквы z на четыре места нельзя расставить без соседства, поэтому ответ — пустая строка.

Пример 3
text="banana" → 'ananab'

Очередь: a, a, a, n, n, b: у a три копии, у n две, у b одна. Чётные позиции получают три a, нечётные — n, n, b: ananab.

Ограничения
  • 1 ≤ len(text) ≤ 500
  • text состоит из строчных латинских букв
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиЗаполнить пропуски с минимумом повторов СредняяОдинаковые буквы на расстоянии СложнаяСимволы, сгруппированные по частоте СредняяЗадания с перерывом на остывание СредняяСамые частые запросы Средняя
загружаем Python…
Вход
text="moon"
Ожидается
'omon'

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