思路1:
python2是 num.sort(cmp=lmb)
也可以用lambda n1, n2:int(str(n1)+str(n2))-int(str(n2)+str(n1))表示升序排列
def mycmp1(x,y): #升序排列
return x-y
def mycmp2(x,y): #降序排列
return y-x
# -*- coding:utf-8 -*-
class Solution:
def PrintMinNumber(self, numbers):
# write code here
if not numbers:
return ''
num=list(map(str,numbers))
num.sort(cmp=lambda x,y:cmp(x+y,y+x))
return ''.join(num).lstrip('0') or'0'
思路2:暴力
# -*- coding:utf-8 -*-
class Solution:
def PrintMinNumber(self, numbers):
# write code here
if not numbers:
return ''
if len(numbers)==1:
return numbers[0]
numstr=list(map(str,numbers))
for i in range(len(numstr)):
for j in range(1+i,len(numstr)):
a=int(numstr[i]+numstr[j])
b=int(numstr[j]+numstr[i])
if(a>b):
t=numstr[i]
numstr[i]=numstr[j]
numstr[j]=t
s=""
for i in range(len(numstr)):
s+=numstr[i]
return int(s)