package com.abuge;
/**
* 面试题33:把数组排成最小的数
* 输入一个正整数数组,把数组里所有数字拼接成一个数,打印成能拼接出所有数字中最小的一个。
* 例如输入数组{3, 32, 321}则打印三个数字能排成的最小数字
* 思路:
* 1、将整型数转换为字符串,可以解决隐形大数问题
* 2、制定比较新规则
*/
import java.util.Arrays;
import java.util.Comparator;
class MyComprator implements Comparator<String>
{
String result1 = null;
String result2 = null;
@Override
public int compare(String str1, String str2)
{
result1 = str1+ str2;
result2 = str2 + str1;
return result1.compareTo(result2);
}
}
public class GetMinNum
{
public static String getMinNum(int[] a, int len)
{
if(a == null || len <= 0)
return null;
String[] tmp = new String[len];
//将数组转换为字符串
for(int i = 0; i < len; i++)
{
tmp[i] = String.valueOf(a[i]);
}
//按照新规则排序
Arrays.sort(tmp, new MyComprator());
StringBuilder sb = new StringBuilder();
for(int i = 0; i < len; i++)
{
sb.append(tmp[i]);
}
return sb.toString();
}
public static void main(String[] args) {
int[] a = {456, 3, 1};
int len = a.length;
System.out.println(getMinNum(a, len));
}
}