LeetCode_Largest Number

Largest Number

Given a list of non negative integers, arrange them such that they form the largest number.
(字符串拼接在一起为最大数)

Example:



1. sort & key

看到这个题目最直观的想法是将这些数字首先按照最高位排序,然后是第二高位,依次排序下去。由于每个数字长度不确定,如何进行排序也不是很明确。因此看到了题目给的解法是重载了sort函数的参数key的类中的__le__函数。(因为sort默认的是升序排列,所以只需要重载__le__即可)

具体实现过程如下:

class LargeNumKey(str):
    def __lt__(x, y):
        return x+y > y+x

class Solution:
    def largestNumber(self, nums: List[int]) -> str:
        largest_num = "".join(sorted(map(str, nums), key=LargeNumKey))

        return '0' if largest_num[0] == '0' else largest_num