import java.util.Arrays;
import java.util.Comparator;
public class E45SplicingToBeMin {
public static String splicing(int[] numbers, int length){
if (numbers == null || length <= 0)
return null;
Integer[] intNumbers = new Integer[length];
for (int i = 0; i < length; i ++){
intNumbers[i] = numbers[i];
}
Arrays.sort(intNumbers, new splicingComparator());
return splicing(intNumbers);
}
private static String splicing(Integer[] numbers){
StringBuilder builder = new StringBuilder();
for (int number : numbers)
builder.append(number);
return builder.toString();
}
static class splicingComparator implements Comparator<Integer>{
@Override
public int compare(Integer number1, Integer number2) {
char[] splicing1 = (number1.toString() + number2.toString()).toCharArray();
char[] splicing2 = (number2.toString() + number1.toString()).toCharArray();
for (int i = 0; i < splicing1.length; i ++){
if (splicing1[i] > splicing2[i])
return 1;
else if (splicing1[i] < splicing2[i])
return -1;
}
return 0;
}
}
public static void main(String[] args){
int[] numbers = {3, 32, 321};
System.out.println(E45SplicingToBeMin.splicing(numbers, 3));
}
}