Ctrl K

Обмены до k-й следующей перестановки

Средняя
Дана строка digits из десятичных цифр (она может начинаться с нулей) и целое число k. Рассмотрим все строки, которые получаются перестановкой цифр digits и как числа строго больше digits. Упорядочим их по возрастанию и возьмём k-ю по счёту (нумерация с единицы). Гарантируется, что такая строка существует. За один шаг можно поменять местами две **соседние** цифры. Верните наименьшее число шагов, за которое digits превращается в выбранную строку.
Пример 1
digits='1123', k=3 → 2

Перестановки цифр, большие 1123, по возрастанию: 1132, 1213, 1231, … Третья — 1231. Из 1123 её получают двумя обменами: 1123 → 1213 → 1231.

Пример 2
digits='4170', k=2 → 1

Следующие за 4170 перестановки — 4701 и 4710. Вторая, 4710, получается одним обменом первых соседних 1 и 7.

Пример 3
digits='120', k=1 → 2

Ближайшая большая перестановка — 201. Нужны два обмена: 120 → 210 → 201.

Ограничения
  • 2 ≤ digits.length ≤ 1000
  • 1 ≤ k ≤ 1000
  • digits состоит только из цифр
  • У digits есть не меньше k перестановок, больших самой строки
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиКуски без общих букв СредняяЗаписка из газетных заголовков СредняяСамое старшее слияние СредняяОбменами к правильным скобкам СредняяДопишите, чтобы слово нашлось Средняя
загружаем Python…
Вход
digits='1123', k=3
Ожидается
2

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