您的位置:首页 > 其它

Largest Number

2016-07-29 10:17 162 查看
leetcode第179题,给出一组整型数字,把他们拼接成一个最大的数字,结果可能超出整型,因此返回字符串。

这道题目的关键是如何对所给的数据进行排序,排序的规则比较特殊,需要自定义,然后把函数指针传入sort函数里,这里在c++、java、python中的应用几乎是大同小异,只要排序完成,接下来的工作就是把排序好的字符串连接起来就可以了。

如果自己寻找排序的规则,比较麻烦,而且容易考虑补全,漏掉情况,索性我们就直接试探,拿出两个数直接把他们拼接成一个数字,观察哪个大然后就返回相应的值即可。

有一种特殊情况,算是一个坑,那就是全都是0,这里需要特殊处理一下。

写得有点啰嗦了,用lambda表达式可以非常简洁,为了清晰我就暂时写成这个样子吧。

class Solution:
# @param {integer[]} nums
# @return {string}
def largestNumber(self, nums):
def cmp(x,y):
sx = str(x)
sy = str(y)
n1 = int(''.join([sx,sy]))
n2 = int(''.join([sy,sx]))
if n1 > n2:
return 1
elif n1 < n2:
return -1
else:
return 0
snums = map(str,nums)
snums.sort(cmp)
zero = True
for num in nums:
if num != 0:
zero = False
break
snums.sort(cmp)
if zero:
return "0"
else:
return ''.join(snums[::-1])
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: