在 Python 中的数字上最多 k 个相邻交换后找到最小可能整数的程序
假设我们有一个名为num的字符串表示一个非常大的整数,并且还有另一个值k。我们最多可以交换值的任意两个相邻数字k次。我们必须找到我们能得到的最小值。
因此,如果输入类似于num="5432"k=4,那么输出将是2453,因为第一个数字是5432。然后在第一阶段之后它将是4532,然后是4523,然后是4253,最后是2453。
示例
让我们看下面的实现来更好地理解
def solve(num, k):
min_num = sorted(list(num))
min_num = ''.join(min_num)
i = 0
to_find = 0
while num != min_num and k > 0 and i < len(num):
indx = num.find(str(to_find), i)
while indx != -1:
if indx - i <= k:
num = num[:i] + num[indx] + num[i:indx] + num[indx+1:]
k -= (indx - i)
i += 1
to_find = 0
indx = num.find(str(to_find), i)
else:
break
to_find += 1
return num
num = "5432"
k = 4
print(solve(num, k))输入
"5432", 4输出结果
2453
热门推荐
10 儿子立冬祝福语简短独特
11 对当兵的祝福语简短
12 侄儿高考试祝福语简短
13 伴郎红包祝福语朋友简短
14 媳妇生日简短祝福语朋友
15 公司年会祝福语简短最好
16 元旦感恩祝福语简短大全
17 红包祝福语简短10字
18 周六早晨祝福语简短