输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
n个数比较复杂,直接思考两个数的场景,如果只有两个数a和b,只要比较ab和ba哪个更小取哪个就行,按照这个思路只要自定义cmp函数然后使用sort函数即可。
def cmp(str1, str2):
s1 = str1 + str2
s2 = str2 + str1
if int(s1) < int(s2):
return -1
else:
return 0
class Solution:
def PrintMinNumber(self, numbers):
# write code here
if numbers is None:
return ""
if len(numbers) == 0:
return ""
strs = []
for item in numbers:
strs.append(str(item))
strs.sort(cmp)
print strs
r = ''
for item in strs:
r = r + item
return int(r)