1850. Minimum Adjacent Swaps to Reach the Kth Smallest Number

Medium


You are given a string num, representing a large integer, and an integer k.

We call some integer wonderful if it is a permutation of the digits in num and is greater in value than num. There can be many wonderful integers. However, we only care about the smallest-valued ones.

  • For example, when num = "5489355142":

    <ul>
    	<li>The 1<sup>st</sup> smallest wonderful integer is <code>"5489355214"</code>.</li>
    	<li>The 2<sup>nd</sup> smallest wonderful integer is <code>"5489355241"</code>.</li>
    	<li>The 3<sup>rd</sup> smallest wonderful integer is <code>"5489355412"</code>.</li>
    	<li>The 4<sup>th</sup> smallest wonderful integer is <code>"5489355421"</code>.</li>
    </ul>
    </li>

Return the minimum number of adjacent digit swaps that needs to be applied to num to reach the kth smallest wonderful integer.

The tests are generated in such a way that kth smallest wonderful integer exists.

Example 1:

Input: num = "5489355142", k = 4
Output: 2
Explanation: The 4th smallest wonderful number is "5489355421". To get this number:
- Swap index 7 with index 8: "5489355142" -> "5489355412"
- Swap index 8 with index 9: "5489355412" -> "5489355421"

Example 2:

Example 3:

Constraints:

  • 2 <= num.length <= 1000

  • 1 <= k <= 1000

  • num only consists of digits.

Last updated