要求
给定一组非负整数 nums,重新排列每个数的顺序(每个数不可拆分)使之组成一个最大的整数。
注意:输出结果可能非常大,所以你需要返回一个字符串而不是整数。
示例 1:
输入:nums = [10,2]
输出:"210"
示例 2:
输入:nums = [3,30,34,5,9]
输出:"9534330"
示例 3:
输入:nums = [1]
输出:"1"
示例 4:
输入:nums = [10]
输出:"10"
核心代码
class Solution:
def largestNumber(self, nums: List[int]) -> str:
s = ""
for a in range(len(nums) - 1):
for b in range(a + 1,len(nums)):
if int(str(nums[a]) + str(nums[b])) < int(str(nums[b]) + str(nums[a])):
nums[a],nums[b] = nums[b],nums[a]
for x in nums:
s += str(x)
return str(int(s))
解题思路:我们通过[9, 30, 3, 34, 5], [9, 5, 30, 3, 34] [9, 5, 34, 30, 3] [9, 5, 34, 3, 30]的可以看出我们每次我们都是将首位最大的值,调整到最前面,当字符串首位相同的时候,第二位大的说了算,所以经过了我们的排序之后,我们最终拼接出来的字符串最大。