题目
思路
这道题需要求出能组成的最大数,思路上比较容易想到贪心,进一步思考可以发现只需将数组按照某种规则排序后加起来就是答案,但是这个规则是什么呢?这里需要给Python指定排序的key参数。对于两个待比较的字符串,排序规则为查看两个字符串正反相加后的字符串,把字典序大的组合中排在前面的字符串也排在前面。这种方法可以保证在排序过程中每次形成的都是尽量大的字符串,最后的答案也是能组成的最大字符串。
代码
class Solution:
def largestNumber(self, nums: List[int]) -> str:
def cmp(str1,str2):
if str1+str2>str2+str1:
return -1
elif str1+str2<str2+str1:
return 1
else:
return 0
ans=[str(i) for i in nums]
ans.sort(key=cmp_to_key(cmp))
return str(int(''.join(ans)))