给定一组非负整数,怎么拼成一个最大的数

思路如下:

  1. 将非负整数转换为字符串形式,以便进行比较和拼接。
  2. 编写一个比较函数,用于比较两个整数字符串的大小。比较规则是,如果拼接字符串 a + b 大于拼接字符串 b + a,则认为 a 大于 b。
  3. 对给定的整数列表进行排序,排序规则是使用比较函数进行比较。这将确保将较大的整数放在拼接结果的前面。
  4. 将排序后的整数字符串依次拼接起来,形成最大的数。

public static void main(String[] args) {
        //  输入格式:9 10 6
        Scanner in = new Scanner(System.in);

        String[] strs=in.nextLine().split(" ");
        String collect = Arrays.stream(strs)
                .sorted(((o1, o2) -> (o2 + o1).compareTo(o1 + o2)))
                .collect(Collectors.joining());

        // 输出格式:9610
        System.out.print(collect);
}

ps:力扣题目链接