题目描述
输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
用例
输入 | 输出 |
---|---|
[3,32,321] | 321323 |
解题思路
超级难
python 代码
# -*- coding:utf-8 -*-
class Solution:
def PrintMinNumber(self, numbers):
# write code here
if len(numbers) == 0:
return ''
numbers.sort()
numbers = list(map(str, numbers))
for i in range(len(numbers)-1): # 0,1
a = numbers[i] + numbers[i+1]
b = numbers[i+1] + numbers[i]
temp = a if int(a) <= int(b) else b
numbers[i+1] = temp
return numbers[-1]
s = Solution()
res = s.PrintMinNumber([3, 32, 321])
print(res)