刷题笔记(19)--把数组排成最小的数

Posted HardyDragon_CC

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了刷题笔记(19)--把数组排成最小的数相关的知识,希望对你有一定的参考价值。

把数组排成最小的数

在这里插入图片描述

  • 根据整形数组生成字符串数组
  • 对字符串数组使用内置函数 sort(排序数组,比较器) 进行排序,排序规则是如果 s1+ s2 的字典序大于 s2 + s1,说明 s1要放在 s2 后面,反之。
  • compareTo 结果大于0,说明要排序,将两个参数交换位置。
  • 最后拼接排序后的字符数组返回字符串即可
class Solution {
    public String minNumber(int[] nums) {
        String[] strs = new String[nums.length];
        for (int i = 0; i < nums.length; i++)
            // valueOf 返回 int 参数的字符串表示形式
            strs[i] = String.valueOf(nums[i]);
        /*
         sort 的第二参数是比较器。
         compareTo 如果参数字符串等于此字符串,则值为0 ;
         如果此字符串按字典顺序小于字符串参数,则为小于0的值;
         如果此字符串按字典顺序大于字符串参数,则为大于0的值。
         (x, y) 为传入的参数,这里指的是两个相邻字符串
        */
        Arrays.sort(strs, (x, y) -> {
            return (x + y).compareTo(y + x);
        });
        StringBuilder res = new StringBuilder();
        for (String s : strs)
            res.append(s);
        return res.toString();
    }
}

以上是关于刷题笔记(19)--把数组排成最小的数的主要内容,如果未能解决你的问题,请参考以下文章

算法题19 把数组排成最小的数

LeetCode 面试题45. 把数组排成最小的数

LeetCode 面试题45. 把数组排成最小的数

把数组排成最小的数

剑指offer把数组排成最小的数

面试题:把数组排成最小的数