思路:先找出这几个整数元素所有的全排列,然后比较哪一个最小即可,全排列的求法可以看我的这篇博客:http://blog.youkuaiyun.com/zx582727090/article/details/52171084
代码如下:
import java.util.ArrayList;
import java.util.TreeSet;
public class Solution {
public String PrintMinNumber(int [] numbers) {
if(numbers.length==0){
return "";
}
TreeSet<String> set = new TreeSet<String>();
arrange(numbers, 0, numbers.length-1, set);
long result = java.lang.Long.MAX_VALUE;
for(String str:set){
long temp = Long.parseLong(str);
if(temp<result){
result = temp;
}
}
return String.valueOf(result);
}
public void arrange(int[] numbers, int begin, int end, TreeSet set){
if(begin==end){
String result = "";
for(int i:numbers){
result += String.valueOf(i);
}
set.add(result);
return;
}else{
for(int i=begin;i<=end;i++){
swap(numbers, begin, i);
arrange(numbers, begin+1, end, set);
swap(numbers, begin, i);
}
}
}
public void swap(int[] numbers, int before, int after){
int temp = numbers[before];
numbers[before] = numbers[after];
numbers[after] = temp;
}
}