题目内容
输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
题目思路
最简单的方法就是创建一个深度优先搜索树,然后我们考虑出所有的情况,然后选择其中最小的那个数字来求解。
程序代码
# -*- coding:utf-8 -*-
class Solution:
def PrintMinNumber(self, numbers):
# write code here
if not numbers:
return ""
res=[]
self.dfs(numbers,res,'')
return min(res)
def dfs(self,num,res,tmp):
if not num:
res.append(int(tmp))
for i in range(len(num)):
self.dfs(num[:i]+num[i+1:],res,tmp+str(num[i]))