排序变形——把数组排成最小的数

题目描述
输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
思想:把数字转字符串,然后拼接起来比较大小。

# -*- coding:utf-8 -*-
class Solution:
    def PrintMinNumber(self, numbers):
        # write code here
        if len(numbers)==0:
            return ""
        def comepare(a,b):
            s1,s2=str(a),str(b)
            if s1+s2>s2+s1:
                return True
            else:
                return False

        for i in range(len(numbers)-1):
            for j in range(len(numbers)-i-1):
                if comepare(numbers[j],numbers[j+1]):
                    numbers[j],numbers[j+1]=numbers[j+1],numbers[j]
        temp=[]
        for i in numbers:
            temp.append(str(i))
        return int("".join(temp))

猜你喜欢

转载自blog.csdn.net/hao5335156/article/details/81153393