1. 程式人生 > >把陣列排成最小的數(最大的數同理) --python3.6

把陣列排成最小的數(最大的數同理) --python3.6

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'