数串
题目:
设有n个正整数,将他们连接成一排,组成一个最大的多位整数。
如:n=3时,3个整数13,312,343,连成的最大整数为34331213。
如:n=4时,4个整数7,13,4,246连接成的最大整数为7424613。
1 package test04; 2 3 import java.util.ArrayList; 4 import java.util.Collections; 5 import java.util.Comparator; 6 import java.util.Iterator; 7 import java.util.Scanner; 8 9 class MyComparator implements Comparator<String>{ 10 11 public int compare(String o1, String o2) { 12 String a = String.valueOf(o1); 13 String b = String.valueOf(o2); 14 if(((a+b).compareTo(b+a))>0){ 15 return -1; 16 }else if(((a+b).compareTo(b+a))<0){ 17 return 1; 18 }else{ 19 return 0; 20 } 21 } 22 } 23 24 class ArraySort { 25 public static void main(String[] args) { 26 Scanner scan = new Scanner(System.in); 27 while(scan.hasNext()){ 28 int n = scan.nextInt(); 29 ArrayList<String> li = new ArrayList<String>(); 30 for(int i=0;i<n;i++){ 31 li.add(scan.next()); 32 } 33 Collections.sort(li, new MyComparator()); 34 35 Iterator<String> iter = li.iterator(); 36 while(iter.hasNext()){ 37 System.out.print(iter.next()); 38 } 39 } 40 } 41 }
具体原理可参考本人博客 http://www.cnblogs.com/XuGuobao/p/7358374.html