leetcode之Largest Number
来源:互联网 发布:网络电视和智能电视 编辑:程序博客网 时间:2024/04/29 12:01
本来看题目感觉是一个很简单的问题,觉得从第一位数最大的开始排序就好了,正好转换成字符串排序就ok了,结果遇到了1和10这种应该是110最大而不是101最大。又开始修改,用正则把后面的0全去掉,比较剩下的值,1和10就ok了,但是12和121的问题又出来了,应该是12121,而不是12112。重新研究下后一种情况,发现可以包括前一种情况。于是自己写了cmp函数,直接排序。写的不是太好。代码如下:
#coding=utf-8def largestNumber(nums):""":type nums: List[int]:rtype: str"""for i in range(len(nums)):nums[i] = str(nums[i])if nums == []:return '0'def sortlist(a, b):if len(a) > len(b):#比较开始的几位for i in range(0, len(b)):if int(a[i]) > int(b[i]):return -1if int(a[i]) < int(b[i]):return 1else:#比较中间的几位gap = len(a) - len(b)for i in range(gap):if a[i + len(b)] > a[i]:return -1if a[i + len(b)] < a[i]:return 1else:# 比较最后的几位for i in range(len(b)):if int(b[i]) < int(a[i + gap]):return 1if int(b[i]) > int(a[i + gap]):return -1else:return 1if len(a) < len(b):#比较开始的几位for i in range(0, len(a)):if int(a[i]) > int(b[i]):return -1if int(a[i]) < int(b[i]):return 1else:#比较中间的几位gap = len(b) - len(a)for i in range(gap):if b[i + len(a)] > b[i]:return 1if b[i + len(a)] < b[i]:return -1else:# 比较最后的几位for i in range(len(a)):if int(a[i]) < int(b[i + gap]):return -1if int(a[i]) > int(b[i + gap]):return 1else:return 1if len(a) == len(b):for i in range(0, len(a)):if int(a[i]) > int(b[i]):return -1if int(a[i]) < int(b[i]):return 1else:return 1nums = sorted(nums, cmp = lambda x, y:sortlist(x, y))result = ''.join(nums)#全是0的情况if int(result) == 0:return '0'return resultprint largestNumber([0,0,0,0,0])
0 0
- leetcode 之Largest Number
- leetcode之Largest Number
- leetcode之largest number
- LeetCode之Largest Number
- LeetCode 之Largest Number(C++)
- LeetCode 之 Largest Number — C++ 实现
- Largest Number @leetCode
- LeetCode : Largest Number
- Leetcode Largest Number
- [LeetCode] Largest Number
- [leetcode]179 Largest Number
- [LeetCode] Largest Number
- Leetcode Largest Number
- [LeetCode]Largest Number
- leetcode 179: Largest Number
- 【LeetCode】Largest Number
- 【Leetcode】Largest Number
- [LeetCode]179.Largest Number
- JDK 1.5 - 1.7 版本特性
- 逃离切尔诺贝利?关于人类身体自我进化的思考
- 0013.scala的抽象类、抽象字段、抽象方法
- 银行笔记
- 黑马程序员--NSDate的使用
- leetcode之Largest Number
- 异常细胞检测
- 文件流(内存到文件,文件到内存,内存到屏幕)
- 理解MySQL——索引与优化
- Linux find 参数name pattern带参数和不带参数
- 无法使用evince命令打开pdf文档
- Debian7 更换源
- 理解Node.js事件驱动编程
- android 取消标题栏出错,程序崩溃的问题