179. 最大数

179. 最大数

这一题的关键是对字符串进行排序。但是如果使用默认的排序方法,答案不是我们想要的。比如30和3,我们需要的排序是3排在30的前面,而默认的排序方法时3排在30后面。因此我们需要自定义排序算法的key。仔细看下代码:

class Solution:
    def largestNumber(self, nums):
        # 要自定义排序的key的话,需要导入cmp_to_key方法
        from functools import cmp_to_key
        string = list(map(str,nums))

        def mysort(x,y):
            return int(x+y)-int(y+x)

        # 注意这里如何自定义一个key
        string.sort(key=cmp_to_key(mysort))
        ans = ''
        while string:
            ans = ans + string[-1]
            string.pop()
        
        # 注意这里的lstrip用法,这一步是为了消除ans前面有0的情况
        ans = ans.lstrip('0')
        if not ans:
            ans = '0'
        
        return ans

python strip()方法:
用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。
语法:

str.strip([chars]);

其中chars为移除字符串头尾指定的字符序列。
返回值为移除字符串头尾指定的字符生成的新字符串

python lstrip()方法 rstrip() 方法:
Python lstrip() 方法用于截掉字符串左边的空格或指定字符。Python rstrip() 删除 string 字符串末尾的指定字符(默认为空格)。它们语法与strip相同。

关键词:strip,key,排序,lstrip,rstrip

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容