题目描述
给定一个数组由一些非负整数组成,现需要将他们进行排列并拼接,使得最后的结果最大,返回值需要是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)