5749. 邻位交换的最小次数
难度中等0
给你一个表示大整数的字符串 num ,和一个整数 k 。
如果某个整数是 num 中各位数字的一个 排列 且它的 值大于 num ,则称这个整数为 妙数 。可能存在很多妙数,但是只需要关注 值最小 的那些。
例如,
1
num = "5489355142"
:
- 第 1 个最小妙数是 
"5489355214" - 第 2 个最小妙数是 
"5489355241" - 第 3 个最小妙数是 
"5489355412" - 第 4 个最小妙数是 
"5489355421" 
返回要得到第 k 个 最小妙数 需要对 num 执行的 相邻位数字交换的最小次数 。
测试用例是按存在第 k 个最小妙数而生成的。
示例 1:
1  | 输入:num = "5489355142", k = 4  | 
示例 2:
1  | 输入:num = "11112", k = 4  | 
示例 3:
1  | 输入:num = "00123", k = 1  | 
提示:
2 <= num.length <= 10001 <= k <= 1000num仅由数字组成
生成下一个全排列
1  | class Solution {  | 
生成下一个全排列
1  | 
  | 
原始版本链接
1  | public void nextPermutation(int[] num) {  | 
参考文献