✅ Решение задачи 2182Time: O(n log(k))
Space: O(k)
💡 Идея🟦Сначала посчитаем частоту каждого символа с помощью
HashMap и поместим все уникальные в
PriorityQueue, которая упорядочена по убыванию для построения строки в лексикографически наибольшем порядке
🟦Затем запускаем процесс формирования строки:
➖извлекаем из очереди наибольший доступный символ и добавляем его к результату не более
repeatLimit раз
➖если частота этого символа больше, чем
repeatLimit, то извлекаем из очереди следующий по убыванию символ и добавляем его один раз в результат
➖если оба символа ещё встречаются — возвращаем их обратно в очередь
🟦В итоге, если нет больше символа для чередования, а текущий превышает лимит повторений, построение строки завершается, и мы получаем лексикографически максимальный результат с учетом ограничения
👩💻 Java Algo |
#solution2182