Largest Number
2016-07-29 10:17
162 查看
leetcode第179题,给出一组整型数字,把他们拼接成一个最大的数字,结果可能超出整型,因此返回字符串。
这道题目的关键是如何对所给的数据进行排序,排序的规则比较特殊,需要自定义,然后把函数指针传入sort函数里,这里在c++、java、python中的应用几乎是大同小异,只要排序完成,接下来的工作就是把排序好的字符串连接起来就可以了。
如果自己寻找排序的规则,比较麻烦,而且容易考虑补全,漏掉情况,索性我们就直接试探,拿出两个数直接把他们拼接成一个数字,观察哪个大然后就返回相应的值即可。
有一种特殊情况,算是一个坑,那就是全都是0,这里需要特殊处理一下。
写得有点啰嗦了,用lambda表达式可以非常简洁,为了清晰我就暂时写成这个样子吧。
这道题目的关键是如何对所给的数据进行排序,排序的规则比较特殊,需要自定义,然后把函数指针传入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])
相关文章推荐
- 《深入理解JVM》读书系列二
- Debian8.0 好用的软件源及更新步骤
- Understanding Peoplesoft Trace
- ::RegisterWindowMessage的用法
- 使用vim文本编辑器的几条小技巧
- Eclipse导入maven项目时报错:maven-resources-plugin:2.5 or one of its dependencies could not be resolved
- 针对返回码不是200
- 二分图的最大匹配深搜算法
- nginx 面试
- jQuery动态添加.active属性实现按钮点击样式
- 修改ToolBar上menu字体的大小
- Spring4----使用注解方式配置bean和bean的属性
- 给当前页或者跳转后页面的导航栏添加选中样式
- 2056不敢死队问题
- IOS开发之NSDictionary里setValue:forKey与setObject:forKey、objectForKey与valueForK...
- WebRTC编译详细介绍 (转)
- npio word导出嵌套table实际可以用方法,付效果图
- 利用mycat实现基于mysql5.5主从复制的读写分离
- Intellij idea 官方快速键中文版
- LVS集群 面试