/
largestnum.py
41 lines (38 loc) · 1.05 KB
/
largestnum.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
def cmp2(str,l,step):
for i in range(l):
if str[i]>str[i+step]:
return -1
elif str[i]<str[i+step]:
return 1
return 0
def cmp(x,y):
if len(x)==len(y):
return int(y)-int(x)
if len(x)<len(y):
if int(y[0:len(x)])==int(x):
print "===x<y==="
return cmp2(y+x,len(y),len(x))
else:
return int(y[0:len(x)])-int(x)
else:
if int(x[0:len(y)])==int(y):
print "===x>y==="
return -1*(cmp2(x+y,len(x),len(y)))
else:
return int(y)-int(x[0:len(y)])
class Solution(object):
def largestNumber(self, nums):
strs=map(str,nums)
strs.sort(cmp)
retval="".join(strs)
last=retval[-1]
retval=retval[:-1].lstrip('0')+last
return retval
s=Solution()
print s.largestNumber([883,8,9576])
print s.largestNumber([12,128])
print s.largestNumber([0,0])
print s.largestNumber([2,10])
print s.largestNumber([121,12])
print s.largestNumber([12,121])
print s.largestNumber([1211,12])