java.lang.Object
g1801_1900.s1850_minimum_adjacent_swaps_to_reach_the_kth_smallest_number.Solution

public class Solution extends Object
1850 - Minimum Adjacent Swaps to Reach the Kth Smallest Number.<p>Medium</p> <p>You are given a string <code>num</code>, representing a large integer, and an integer <code>k</code>.</p> <p>We call some integer <strong>wonderful</strong> if it is a <strong>permutation</strong> of the digits in <code>num</code> and is <strong>greater in value</strong> than <code>num</code>. There can be many wonderful integers. However, we only care about the <strong>smallest-valued</strong> ones.</p> <ul> <li>For example, when <code>num = &quot;5489355142&quot;</code>: <ul> <li>The 1<sup>st</sup> smallest wonderful integer is <code>&quot;5489355214&quot;</code>.</li> <li>The 2<sup>nd</sup> smallest wonderful integer is <code>&quot;5489355241&quot;</code>.</li> <li>The 3<sup>rd</sup> smallest wonderful integer is <code>&quot;5489355412&quot;</code>.</li> <li>The 4<sup>th</sup> smallest wonderful integer is <code>&quot;5489355421&quot;</code>.</li> </ul> </li> </ul> <p>Return <em>the <strong>minimum number of adjacent digit swaps</strong> that needs to be applied to</em> <code>num</code> <em>to reach the</em> <code>k<sup>th</sup></code> <em><strong>smallest wonderful</strong> integer</em>.</p> <p>The tests are generated in such a way that <code>k<sup>th</sup></code> smallest wonderful integer exists.</p> <p><strong>Example 1:</strong></p> <p><strong>Input:</strong> num = &ldquo;5489355142&rdquo;, k = 4</p> <p><strong>Output:</strong> 2</p> <p><strong>Explanation:</strong> The 4<sup>th</sup> smallest wonderful number is &ldquo;5489355421&rdquo;. To get this number:</p> <ul> <li> <p>Swap index 7 with index 8: &ldquo;5489355142&rdquo; -> &ldquo;5489355412&rdquo;</p> </li> <li> <p>Swap index 8 with index 9: &ldquo;5489355412&rdquo; -> &ldquo;5489355421&rdquo;</p> </li> </ul> <p><strong>Example 2:</strong></p> <p><strong>Input:</strong> num = &ldquo;11112&rdquo;, k = 4</p> <p><strong>Output:</strong> 4</p> <p><strong>Explanation:</strong> The 4<sup>th</sup> smallest wonderful number is &ldquo;21111&rdquo;. To get this number:</p> <ul> <li> <p>Swap index 3 with index 4: &ldquo;11112&rdquo; -> &ldquo;11121&rdquo;</p> </li> <li> <p>Swap index 2 with index 3: &ldquo;11121&rdquo; -> &ldquo;11211&rdquo;</p> </li> <li> <p>Swap index 1 with index 2: &ldquo;11211&rdquo; -> &ldquo;12111&rdquo;</p> </li> <li> <p>Swap index 0 with index 1: &ldquo;12111&rdquo; -> &ldquo;21111&rdquo;</p> </li> </ul> <p><strong>Example 3:</strong></p> <p><strong>Input:</strong> num = &ldquo;00123&rdquo;, k = 1</p> <p><strong>Output:</strong> 1</p> <p><strong>Explanation:</strong> The 1<sup>st</sup> smallest wonderful number is &ldquo;00132&rdquo;. To get this number:</p> <ul> <li>Swap index 3 with index 4: &ldquo;00123&rdquo; -> &ldquo;00132&rdquo;</li> </ul> <p><strong>Constraints:</strong></p> <ul> <li><code>2 <= num.length <= 1000</code></li> <li><code>1 <= k <= 1000</code></li> <li><code>num</code> only consists of digits.</li> </ul>
  • Constructor Details

    • Solution

      public Solution()
  • Method Details

    • getMinSwaps

      public int getMinSwaps(String num, int k)