1. 程式人生 > >[劍指Offer] 把陣列排成最小的數(Python)

[劍指Offer] 把陣列排成最小的數(Python)

題目描述

輸入一個正整數陣列,把數組裡所有數字拼接起來排成一個數,列印能拼接出的所有數字中最小的一個。例如輸入陣列{3,32,321},則打印出這三個數字能排成的最小數字為321323。

思路

先將整數陣列轉為字串陣列,然後用比較器實現字串比較大小。如果有字串A和B, A + B < B + A,則A在前;反之B在前。最後將字串陣列連線去除返回值左側的0。

程式碼

# -*- coding:utf-8 -*-
class Solution:
    def PrintMinNumber(self, numbers):
        if numbers is
None or len(numbers) == 0: return "" // 對映為字串陣列 numbers = map(str, numbers) numbers.sort(cmp = lambda x, y : cmp(x + y, y + x)) return "".join(numbers).lstrip()