题目:输入一个正整数数组,把数组里所有整数拼接起来排成一个数,打印出能拼接出的所有数字中最小的一个。如输入数组{3,32,321},则输出这三个数字能排成的最小数字为:321323
代码:
1 import java.util.Arrays; 2 import java.util.Comparator; 3 4 public class MinCombineNum { 5 6 public static void main(String[] args) { 7 Integer []arr = {32,3,321}; 8 int res = f(arr); 9 System.out.println("能排成的最小数字为:"+res); 10 } 11 12 /** 13 * 注意这儿的参数类型为Integer 14 * @param arr 15 * @return 16 */ 17 static int f(Integer []arr){ 18 // 自定义比较规则 灵活使用JavaAPI 19 Arrays.sort(arr,new Comparator<Integer>() { 20 21 @Override 22 public int compare(Integer o1, Integer o2) { 23 String s1 = o1+""+o2; 24 String s2 = o2+""+o1; 25 return s1.compareTo(s2); 26 } 27 28 }); 29 StringBuilder sb = new StringBuilder(); 30 for (int i = 0; i < arr.length; i++) { 31 sb.append(arr[i]); 32 } 33 return Integer.parseInt(sb.toString()); 34 } 35 }
结果:
总结:这道题告诉我们要灵活使用JavaAPI,在竞赛或工作中直接调用即可,就不用在手写了。