码迷,mamicode.com
首页 > 其他好文 > 详细

lintcode_184.最大数

时间:2017-12-19 20:00:11      阅读:132      评论:0      收藏:0      [点我收藏+]

标签:整数   result   匿名函数   字符   class   提交   end   sel   join   

给出一组非负整数,重新排列他们的顺序把他们组成一个最大的整数。

 注意事项

最后的结果可能很大,所以我们返回一个字符串来代替这个整数。

样例

给出 [1, 20, 23, 4, 8],返回组合最大的整数应为8423201

思路:

找到首数最大的,然后找其次位最大的。于是考虑转为str数组比较

class Solution:
    """
    @param: nums: A list of non negative integers
    @return: A string
    """
    def largestNumber(self, nums):
        # write your code here
        
        nums_str = []
        for i in nums: nums_str.append(str(i))

        nums_str.sort()
        nums_str.reverse()
        
    
        if int(result) == 0:
            return "0"
        return result
        

提交后发现报错,分析,因为字符串数组比较时“98”>"9"但在排序时,应该把9放在"98"前,因此需要自定义一种比较大小函数

九章参考:

class Solution:    
    # @param num: A list of non negative integers
    # @return: A string
    def largestNumber(self, num):
        nums = sorted(num, cmp=lambda x, y: 1 if str(x) + str(y) < str(y) + str(x) else -1)
        largest = ‘‘.join([str(x) for x in nums])
        i, length = 0, len(largest)
        while i + 1 < length:
            if largest[i] != 0:
                break
            i += 1
        return largest[i:]

lambda 嵌入到其他函数中的匿名函数,重新定义了sorted的比较方式,写法清晰明了

 

lintcode_184.最大数

标签:整数   result   匿名函数   字符   class   提交   end   sel   join   

原文地址:http://www.cnblogs.com/zhangli-ncu/p/8066350.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!