题目描述
输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
思路:
emmmmm承认我菜啊,这道题想了好久好久才懂
按拼接次序进行排序得到的数字串变成str后数字是最小的,这句话啥意思?
就是两两互相拼接找大小的排序,比如‘23’和‘32’拼接,拼接后有2332和3223,这样我们就知道得把23放在32前面,也就是排序,那对所有数组元素用这种方法进行递归,最后转换为字符串,那就是最小的数了emmmm
在python中用到了 sort 和在sort里面运用 cmp方法进行排序。
class Solution:
def PrintMinNumber(self,numbers):
if not numbers:
return ""
num = map(str,numbers)
num.sort(lambda x,y:cmp(x+y,y+x))
return ''.join(num)