首页 > 编程语言 > 详细

把数组排成最小的数(剑指offer-32)

时间:2020-07-07 22:54:52      阅读:74      评论:0      收藏:0      [点我收藏+]

题目描述

输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。

题目解析

先设置一种比较优先级排序,优先级为:将比较的两个元素拼接的两种结果去比较大小,然后由他们的大小关系去比较所拼接元素的优先级。
eg:输入数组{12,321},首先比较12321和32112的大小,然后根据这个大小去拼接字符串

题目解答

import java.util.*;

public class Solution {
    public String PrintMinNumber(int [] numbers) {
        ArrayList<String> list = new ArrayList<>();
        for(int x:numbers){
            list.add(x+"");
        }
        list.sort((o1,o2)->{
            String a1 = o1+o2;
            String a2 = o2+o1;
            return a1.compareTo(a2);
        });
        StringBuilder result = new StringBuilder();
        for(String x:list){
            result.append(x);
        }
        return result.toString();
    }
}

把数组排成最小的数(剑指offer-32)

原文:https://www.cnblogs.com/yzhengy/p/13263534.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!