题目
分析
冒泡排序。
以结果为最小数,排在最前面的数字的选择,应该是每次用第一位的数和后面的数组成两种情况 numbers[0]拼接numbers[j]或者numbers[j]拼接numbers[0],如果前者大,则不变这个位置,后者大则交换0和j的数字。这样遍历一遍后,第一位的数字就是必须排在最前面的。
然后再按照这种拼接的方式取出排在第二位的数。依次选出所有位置的数字,返回结果。
python代码
class Solution:
def PrintMinNumber(self, numbers):
# write code here
if len(numbers)==0:return ""
if len(numbers)==1:return str(numbers[0])
numbers = [str(i) for i in numbers]
for i in range(len(numbers)):
for j in range(i+1,len(numbers)):
a = numbers[i]+numbers[j]
b = numbers[j]+numbers[i]
if a>b:
numbers[i],numbers[j] = numbers[j],numbers[i]
return "".join(numbers)