python数字位数重排_Python面试题:给定一组非负整数,重新排列它们的顺序使之组成一个最大的整数...

题目:

方法:

class Solution:

def cmp(self,x,y):

return (x > y) - (x < y)

def comper(self,x,nums):

temp = 0

for n in nums:

n = str(n)

temp += self.cmp(int(x+n),int(n+x))

#print(self.cmp(int(x),n))

return temp

def largestNumber(self, nums):

"""

:type nums: List[int]

:rtype: str

"""

temp_list = [str(x) for x in nums]

temp_list.sort(key=lambda x:self.comper(x,nums),reverse=True)

return "".join(temp_list).lstrip("0") or "0"

cmp方法比较x与y的大小,x>y返回1,x

comper方法将传入的x依次与nums中的元素比较x在前组合,与nums元素在前组合的大小

并且累加cmp返回的值

最后返回主函数,将nums按照带入comper,得到的值进行倒排

返回得到的结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值