求最大数问题

问题描述:

给定一组非负整数 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);
    }
}

 

上一篇:Java字符串转数字和数字转字符串


下一篇:java基础学习(二)