179. 最大數(shù)

這一題的關(guān)鍵是對(duì)字符串進(jìn)行排序。但是如果使用默認(rèn)的排序方法,答案不是我們想要的。比如30和3,我們需要的排序是3排在30的前面,而默認(rèn)的排序方法時(shí)3排在30后面。因此我們需要自定義排序算法的key。仔細(xì)看下代碼:
class Solution:
def largestNumber(self, nums):
# 要自定義排序的key的話,需要導(dǎo)入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)
# 注意這里如何自定義一個(gè)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()方法:
用于移除字符串頭尾指定的字符(默認(rèn)為空格或換行符)或字符序列。
語(yǔ)法:
str.strip([chars]);
其中chars為移除字符串頭尾指定的字符序列。
返回值為移除字符串頭尾指定的字符生成的新字符串
python lstrip()方法 rstrip() 方法:
Python lstrip() 方法用于截掉字符串左邊的空格或指定字符。Python rstrip() 刪除 string 字符串末尾的指定字符(默認(rèn)為空格)。它們語(yǔ)法與strip相同。
關(guān)鍵詞:strip,key,排序,lstrip,rstrip