题目描述
输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
题目地址
思路
首先将数组中的数字全部转换为字符串存储在一个新的数组中,然后比较每两个数字串的拼接的mn和nm的大小,若mn<nm,则m更小,反之n更小,然后把更小的数放入一个新的List中,最后输出即可。使用冒泡排序很方便。
Python
# -*- coding:utf-8 -*- class Solution: def PrintMinNumber(self, numbers): # write code here if not numbers: return '' s = [str(num) for num in numbers] for i in range(len(numbers)-1): for j in range(i+1,len(numbers)): if s[i]+s[j] > s[j]+s[i]: s[i],s[j] = s[j],s[i] s = ''.join(s) return s if __name__ == '__main__': result = Solution().PrintMinNumber([3,5,1,4,2]) print(result)
作者:huangqiancun
出处:http://www.cnblogs.com/huangqiancun/
本博客若无特殊说明则由作者原创发布,欢迎转载,但请注明出处 :)