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