题目描述
输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
思路:
将数组中的数字转换成string进行操作比较,比较规定如下
任意两个str1 和str2进行比较
首先连接成
num1 = str1+str2
num2 = str2+str1
转换成int型
① intnum1 > intnum2 str1>str2
② intnum1 < intnum2 str2>str1
③ intnum1==intnum2 str1=str2
# -*- coding:utf-8 -*-
class Solution:
def PrintMinNumber(self, numbers):
# write code here
#把int转换为string
numstrs = map(str,numbers)
# 用特定的比较方式进行比较
numsort = sorted(numstrs,cmp = self.cmp,reverse=True)#降序
#拍完序之后用join进行连接成结果
return "".join(i for i in numsort)
# 指定比较方式
def cmp(self,n1,n2):
n12 = n1+n2
n21 = n2+n1
return 1 if n12<n21 else -1
s = Solution()
print s.PrintMinNumber([3,5,1,4,2])
网友评论