Largest Number(leetcode 179)

给定一个int数组(每个数字无前导0),要求用这些数字拼接出一个最大的数字。

解决思路:
对整个数组进行排序,把排序后的结果拼接起来。
那么如何进行排序呢?只需要定义一个比较函数,如果str(x)+str(y)<str(y)+str(x),则说明y放在x前面比较合适。

在Python中,sorted方法现在只能提供key作为比较函数,这个函数只能处理单个元素,没法进行两两比较,这是有局限性的。

class Solution:
    # @param {integer[]} nums
    # @return {string}
    def cmp(self, x, y):
        return str(x) + str(y) < str(y) + str(x)

    def largestNumber(self, nums):
        for i in range(len(nums)):
            for j in range(i + 1, len(nums)):
                if self.cmp(nums[i], nums[j]):
                    nums[i], nums[j] = nums[j], nums[i]
        print(nums)
        ans = ''.join(map(lambda x: str(x), nums)).lstrip('0')
        if ans == "":
            return "0"
        else:
            return ans

原文地址:https://www.cnblogs.com/weiyinfu/p/7500586.html