题目描述

给定一个数组由一些非负整数组成,现需要将他们进行排列并拼接,使得最后的结果最大,返回值需要是string类型 否则可能会溢出

解题思路

1. 先对列表进行降序排序
2.将列表中的值分别转换成string类型
3.对比当前元素和下一个相邻元素两两交换位置的合并值 ,如果相邻的元素在前可以使数更大,则交换两个元素的位置,以此类推,依此比较数组中的元素,如下图所示:
图片说明
4.最后直到将所有元素排好序,循环结束。

5.需要注意的是,如果排序好的数组的第一个元素是0,则直接返回0。

核心代码

# nums = [3,30,34,5,9]
def findMax(nums):
    if not nums:
        return
    nums.sort(reverse = True)
    map(str,nums) #将数组中的值映射为str
    
    for i in range(0,len(nums)-1):
        for j in range(0,len(nums)-1-i):
            if int(nums[j+1]+nums[j])>int(nums[j]+nums[j+1]):
                nums[j],nums[j+1] = nums[j+1],nums[j]
    if nums[0] == '0':
        return '0'
    return ''.join(nums)