问题描述:

给定一组非负整数 ​​nums​​,重新排列每个数的顺序(每个数不可拆分)使之组成一个最大的整数。

注意:输出结果可能非常大,所以你需要返回一个字符串而不是整数。

示例 1:
输入:nums = [10,2]
输出:"210"

示例 2:
输入:nums = [3,30,34,5,9]
输出:"9534330"

示例 3:
输入:nums = [1]
输出:"1"

示例 4:
输入:nums = [10]
输出:"10"

 

 

参考代码:

package com.gong;

import java.util.Arrays;

public class MaxMum {
public static String largestNumber(int[] muns){
int len=muns.length; //记录数组的长度
if(len>=2) {
//排序,s1 + s2 > s2 + s1
/**
* 通过对比,从第一个元素开始,每一轮找到最大的数,并比大的数放前面,一直到n-1个元素
* */
for (int i = 0; i < len - 1; i++) {
for (int j = i + 1; j < len; j++) {
String mun1 = String.valueOf(muns[i]) + String.valueOf(muns[j]);
String mun2 = String.valueOf(muns[j]) + String.valueOf(muns[i]);
if (Long.parseLong(mun2) > Long.parseLong(mun1)) {
int tmp;
tmp = muns[j];
muns[j] = muns[i];
muns[i] = tmp;
}
}
}
}

if(len==1){
return String.valueOf(muns[0]);
}

StringBuffer sbf = new StringBuffer();
for (int i=0;i<len;i++){
sbf.append(muns[i]);
}
return sbf.toString();
}

public static void main(String[] args) {
int[] amun={3,30,34,5,9,9,8,77,90,987};
String result=largestNumber(amun);
System.out.println(result);
}
}