1、比较两个字符串s1, s2大小的时候,先将它们拼接起来,比较s1+s2,和s2+s1那个大,如果s1+s2大,那说明s2应该放前面,所以按这个规则,s2就应该排在s1前面。
在python中可以直接对拼接后的字符串进行大小比较。此处要注意,py2中sort和sorted的cmp关键字在py3中已经取消了,在py3中要调用该关键字必须要import functools库里面的cmp_to_key。
2、题目:
输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
from functools import cmp_to_key
class Solution:
def cmp(self,a,b):
if a+b>b+a:
return 1
if a+b<b+a:
return -1
else:
return 0
def PrintMinNumber(self,numbers):
if not numbers:
return ""
number = list(map(str,numbers))
number.sort(key=cmp_to_key(self.cmp))
return "".join(number).lstrip('0') or '0'
so = Solution()
so.PrintMinNumber([3,32,321])
结果如下:
'321323'