问题描述
LeetCode 179. 最大数 (opens in a new tab),难度中等。
给定一组非负整数 nums
,重新排列每个数的顺序(每个数不可拆分)使之组成一个最大的整数。
**注意:**输出结果可能非常大,所以你需要返回一个字符串而不是整数。
示例 1
输入:nums = [10,2] 输出:"210"
示例 2
输入:nums = [3,30,34,5,9] 输出:"9534330"
提示:
1 <= nums.length <= 100
0 <= nums[i] <= 10^9
题解
排序
解题思路:现将 int 类型转成 str 类型,然后进行字符串比较,存在字符串情况 ['33', '332', '334']
以及 nums[i] 的范围 0 <= nums[i] <= 10^9
,所以我们将字符串拉长再去比较
Solution.py
class Solution(object):
def largestNumber(self, nums):
# int 转 str
nums = list(map(str, nums))
# 因为 nums[i] 的范围是 10^9,所以我们需要拉长 nums[i],以便比较 ['33', '332', '334']
nums.sort(key=lambda x: x * 10, reverse=True)
return str(int(''.join(nums)))