📅  最后修改于: 2023-12-03 14:55:36.384000             🧑  作者: Mango
当给定一个数字和一个目标数字时,我们需要找到在目标数字的任意位置插入给定数字所能形成的最小数字。
我们可以将目标数字转换为字符串,然后逐个比较字符。当我们找到第一个大于或等于给定数字的字符时,我们可以将给定数字插入到该字符之前的位置。为了使生成的数字最小,我们需要在尝试每个字符插入给定数字后,都要保留生成的最小数字,并继续向后查找更多的插入位置。如果我们到达字符串的末尾时仍然没有找到位置,则应该将给定数字附加到数字的末尾。
def insert_num_to_min(num: int, target: int) -> int:
num_str = str(target)
min_num = float('inf')
for i in range(len(num_str)):
new_num_str = num_str[:i] + str(num) + num_str[i:]
new_num = int(new_num_str)
if new_num < min_num:
min_num = new_num
if num > int(num_str[-1]):
new_num_str = num_str + str(num)
new_num = int(new_num_str)
if new_num < min_num:
min_num = new_num
return min_num
假设我们有一个目标数字 17684
,需要插入一个数字 5
。使用上述代码,我们可以得到插入数字后结果最小的数字为 157684
。