最大数

来源:互联网 发布:单片机红绿灯电路图 编辑:程序博客网 时间:2024/06/05 17:17
给出一组非负整数,重新排列他们的顺序把他们组成一个最大的整数。
 注意事项
最后的结果可能很大,所以我们返回一个字符串来代替这个整数。
样例

给出 [1, 20, 23, 4, 8],返回组合最大的整数应为8423201。

import java.util.Arrays;import java.util.Comparator;import java.util.Scanner;/** *  * 给出一组非负整数,重新排列他们的顺序把他们组成一个最大的整数。 注意事项最后的结果可能很大,所以我们返回一个字符串来代替这个整数。样例给出 [1, 20, 23, 4, 8],返回组合最大的整数应为8423201。 * @author Dell * */public class Test184 { public static String largeNumber(int[] num) {  int count=0;for(int i=0;i<num.length;i++){if(num[i]==0){count++;}}if(count==num.length)return "0"; String[] a=new String[num.length]; for(int i=0;i<num.length;i++) { a[i]=String.valueOf(num[i]); }    Arrays.sort(a, new Comparator<String>()    {@Overridepublic int compare(String o1, String o2) {String s1=o1+o2;String s2=o2+o1;return s1.compareTo(s2);}            });       StringBuilder sb=new StringBuilder();    for(int i=a.length-1;i>=0;i--)    {    sb.append(a[i]);    }    return sb.toString(); }public static void main(String[] args) {    Scanner sc=new Scanner(System.in);      int n=sc.nextInt();      int[] a=new int[n];      for(int i=0;i<a.length;i++)      {      a[i]=sc.nextInt();      }    System.out.println(largeNumber(a));  /*String[] a={"1","2","10","11"};   Arrays.sort(a);   for(int i=0;i<a.length;i++)   {   System.out.print(a[i]+" ");   }*/}}


原创粉丝点击