题目描述:
输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
思路:
例如3,2,因为32>23,所以2应该排在前面,这对应一种排序规则
即:if a b > ba:a>b
代码:
class Solution:
def PrintMinNumber(self, numbers):
# write code here
numbers = list(map(str, numbers))
res = self.strSort(numbers)
return ''.join(res)
def strSort(self, l):
if len(l) <= 1:
return l
left = self.strSort([i for i in l[1:] if (i + l[0]) < (l[0] + i)])
right = self.strSort([i for i in l[1:] if (i + l[0]) >= (l[0] + i)])
return left + [l[0]] + right