Ctrl K

Ни одной буквы напротив своей копии

Сложная
Дана строка letters чётной длины n из строчных латинских букв. Разобьём позиции на зеркальные пары: позиция i стоит напротив позиции n - 1 - i. Переставьте буквы строки (любое число раз меняя местами любые две буквы) так, чтобы ни в одной зеркальной паре буквы не совпадали. Среди всех подходящих перестановок верните наименьшую в алфавитном (словарном) порядке. Если так переставить буквы нельзя, верните строку "-1".
Пример 1
letters="zaza" → 'aazz'

В aazz зеркальные пары — (a, z) и (a, z), совпадений нет. Строки меньше aazz из этих букв не составить.

Пример 2
letters="cbbaba" → 'aabcbb'

Отсортированная строка aabbbc не подходит: в центре стоят две b. Если переставить правую половину в cbb, получится aabcbb — пары (a, b), (a, b), (b, c).

Пример 3
letters="kkkkkm" → '-1'

Пар три, а букв k пять — хотя бы в одной паре окажутся две k. Ответ "-1".

Ограничения
  • 2 ≤ len(letters) ≤ 10⁵
  • длина letters чётная
  • letters состоит из строчных латинских букв
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиОдинаковые буквы на расстоянии СложнаяРазличимые сокращения слов СложнаяСортировка по кусочкам СложнаяСамое большое число из кусков СредняяСила слабейшего в паре Лёгкая
загружаем Python…
Вход
letters="zaza"
Ожидается
'aazz'

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