1. 程式人生 > >【劍指offer】Q33:把陣列排成最小的數

【劍指offer】Q33:把陣列排成最小的數

分析:

假如給定的陣列中的元素是1-9之間的數,我們怎麼來處理呢?比如[ 1,4,7,9,3,8],很簡單,排個序,就是134789。

這裡不同的一點就是,給定的數稍微複雜一點,不再單純的是1位的數,[3,32,321] 這種情況也會出現。我們還想用排序,那麼就需要自己制定下排序規則,也就是比較的標準。

str1和str2 長度相同的比較就不說了,在長度不同的時候,我們將長度短的用最後一位進行補齊。

def strcp(str1, str2):
	i = 0
	j = 0
	if len(str1) < len(str2):
		str1, str2 = str2, str1
	d = len(str1) - len(str2)
	for k in range(d):
		str2 += str2[-1]
	
	return cmp(str1,str2)

def mincom(items):
	re = ""
	s = sorted(items,cmp = lambda x, y:strcp(x, y), reverse = False)
	for item in s:
		re += item
	return re