from functools import cmp_to_key
class Solution:
def solve(self,nums): strs=map(str,nums) # 将整型的数字转化为字符串 def cmp1(x, y): # x=20,y=4 if y+x> x+y: # 如果420>204,交换20和4的位置,变成4和20 return 1 else: return -1 temp = sorted(strs, key=cmp_to_key(cmp1)) return "".join(temp if temp[0] != '0' else '0')
cmp_to_ke用法:
import functools
x=[1,3,2,4,5]
def cmp_rise(a,b):
'''
升序排序:
当前面的参数a小于后面的参数b返回-1,-1代表保持不变,
当前面的的参数a大于等于后面的参数b返回1,1代表交换顺序。
因此保证了前面的数子小于后面的数字,是升序排序。
'''
if a <b:
return -1
else:
return 1
def cmp_decline(a,b):
'''
降序排序:
当前面的参数a小于后面的参数b返回1,1代表交换顺序,
当前面的的参数a大于等于后面的参数b返回-1,-1代表保持不变。
因此保证了前面的数子大于后面的数字,是降序排序。
'''
if a <b:
return 1
else:
return -1
x_sorted_by_rise=sorted(x,key=functools.cmp_to_key(cmp_rise))
x_sorted_by_decline=sorted(x,key=functools.cmp_to_key(cmp_decline))
print(x) # 输出结果:[1, 3, 2, 4, 5]
print(x_sorted_by_rise) # 输出结果:[1, 2, 3, 4, 5]
print(x_sorted_by_decline) # 输出结果:[5, 4, 3, 2, 1]