问题描述:
给定一组非负整数 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); } }