给出一组非负整数,重新排列他们的顺序把他们组成一个最大的整数。
注意事项
最后的结果可能很大,所以我们返回一个字符串来代替这个整数。
样例
注意事项
最后的结果可能很大,所以我们返回一个字符串来代替这个整数。
样例
给出 [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>()
{
@Override
public 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]+" ");
}*/
}
}