1.题目描述
给定一组非负整数,重新排列它们的顺序使之组成一个最大的整数。
示例 1:
输入: [10,2]
输出: 210
示例 2:输入: [3,30,34,5,9]
输出: 9534330
说明: 输出结果可能非常大,所以你需要返回一个字符串而不是整数。
2.解题思路
自定义比较函数,比较 int(str1+str2)与int(str2+str1)的大小,从而对nums进行全局排序
注意,结果可能在字符串首位出现“0”,因此先取int再通过str返回
注意,在python3中,使用sort函数需要加入如下两行代码:
from functools import cmp_to_key
nums.sort(key=cmp_to_key(cmp))
3.代码实现
class Solution(object):
def cmp(self,a,b):
if int(str(a)+str(b))>int(str(b)+str(a)):
return -1
elif int(str(a)+str(b))<int(str(b)+str(a)):
return 1
else:
return 0
def largestNumber(self, nums):
"""
:type nums: List[int]
:rtype: str
"""
nums.sort(self.cmp)
return str(int("".join(str(i) for i in nums)))