题目描述:
输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印所拼接出的所有数字中最小的一个。例如:输入数组{3,32,321},则打印出这三个数字能排成的最小数字是321323
思路:
1.首先,只考虑两个数字的情况:[3,32],可以看出 332>323,因此需要把数组改变为[32,3];
2.对于有三个数的情况:[3,32,321],我们可以进行两两比较,332>323,于是将3和32交换位置,变成[32,3,321],而3321>321,所以,将3和321交换位置,即为[32,321,3],接下来比较,323213>321323,所以将32与321进行位置交换,即[321,32,3]
def getMinNumber(list01):
if list01 is None: #首先判断列表是否为空
return None
for i in range(len(list01)):
for j in range(i+1,len(list01)):
if str(list01[i])+ str(list01[j]) > str(list01[j]) + str(list01[i]): #注意类型转换
list01[i],list01[j] = list01[j],list01[i] #进行交换
return"".join(str(x) for x in list01)
#list02= "".join(list) #报错:expected str instance, int found 应为str实例,找到int
print(getMinNumber([3,32,321]))