本文共 1215 字,大约阅读时间需要 4 分钟。
输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组 {3,32,321},则打印出这三个数字能排成的最小数字为 321323。
代码如下:
import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;public class MinNumber { ArrayListarray=new ArrayList<>(); class ComparatorListSort implements Comparator { //自定义比较器 @Override public int compare(Object o1, Object o2) { char[] s1=(String.valueOf(o1)).toCharArray(); char[] s2=(String.valueOf(o2)).toCharArray(); int s1_n=s1.length; int s2_n=s2.length; int min=s1_n-s2_n>0?s2_n:s1_n; for(int i=0;i s2[i]) { return 1; } else { continue; } } if(s1_n==s2_n) { return 0; } else if(s1_n temp) { if(left==0) { StringBuilder sb=new StringBuilder(); for(int value:temp) { sb.append(value); } array.add(sb.toString()); return; } for(int i=0;i temp=new ArrayList<>(); getAll(n, n,flag, numbers,temp); Collections.sort(array,new ComparatorListSort()); //调用collections工具类,其中用到了定义比较器,使之可以按照我们规定的方式进行排序 return array.get(0); } public static void main(String[] args) { System.out.println(new MinNumber().PrintMinNumber(new int[] {3,32,321,11,22})); }}
转载地址:http://dckmi.baihongyu.com/