Problem
Given a list of non-negative integers nums, arrange them such that they form the largest number and return it.
Since the result may be very large, so you need to return a string instead of an integer.
Algorithm
Sort. Define the compare function.
Notice: Remove the leading zores, such as “00”
Code
class Solution:
def largestNumber(self, nums: List[int]) -> str:
def cmp(x, y):
if int(x+y) < int(y+x):
return 1
elif int(x+y) > int(y+x):
return -1
else:
return 0
nlen = len(nums)
s = []
for i in range(nlen):
s.append(str(nums[i]))
s = sorted(s, key=functools.cmp_to_key(cmp))
ans = ""
for i in range(nlen):
ans = ans + s[i]
while len(ans) > 1 and ans[0] == '0':
ans = ans[1:]
return ans