Java 把数组排成最小的数详解

把数组排成最小的数

题目描述

输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。

例如输入数组 [3, 32, 321],则打印出这3个数字能排成的最小数字321323

解法

import java.util.Arrays;

/**
 * @author bingo
 * @since 2018/12/8
 */

class Solution {

    /**
     * 打印数组元素组成的最小的数字
     *
     * @param nums 数组
     * @return 最小的数字
     */
    public String printMinNumber(int[] nums) {
        if (nums == null || nums.length == 0) {
            return "";
        }
        int n = nums.length;
        String[] strNums = new String[n];
        for (int i = 0; i < n; ++i) {
            strNums[i] = String.valueOf(nums[i]);
        }

        Arrays.sort(strNums, (o1, o2) -> (o1 + o2).compareTo(o2 + o1));

        StringBuilder sb = new StringBuilder();
        for (String str : strNums) {
            sb.append(str);
        }
        return sb.toString();
    }
}

测试用例

  1. 功能测试(输入的数组中有多个数字;输入的数组中的数字有重复的数位;输入的数组中只有一个数字);
  2. 特殊输入测试(表示数组的指针为空指针)。

教程来源于Github,感谢apachecn大佬的无私奉献,致敬!

技术教程推荐

玩转Git三剑客 -〔苏玲〕

ZooKeeper实战与源码剖析 -〔么敬国〕

全栈工程师修炼指南 -〔熊燚(四火)〕

现代C++编程实战 -〔吴咏炜〕

检索技术核心20讲 -〔陈东〕

高楼的性能工程实战课 -〔高楼〕

大数据经典论文解读 -〔徐文浩〕

Web 3.0入局攻略 -〔郭大治〕

AI绘画核心技术与实战 -〔南柯〕