美文网首页
剑指offer--把数组排成最小的数

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

作者: Cuttstage | 来源:发表于2019-04-20 23:28 被阅读0次

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

思路:
可以知道,应该按照一定的顺序排列数组,而规则则是:s1+s2>s2+s1 对应 s1>s2,s2应该在前面
如上面的 3321和3213相比。利用重写compareTo函数进行排序。

代码:

import java.util.ArrayList;
import java.util.Arrays;

public class Solution {
    public String PrintMinNumber(int [] numbers) {
        if( numbers == null || numbers.length == 0 ) return "";
        String[] arr = new String[numbers.length];
        for(int i=0; i<numbers.length; i++){
            arr[i] = numbers[i] + "";
        }
        Arrays.sort(arr, (s1, s2) -> ( s1 + s2 ).compareTo( s2 + s1));
        String ret = "";
        for( String temp:arr){
            ret = ret + temp;
        }
        return ret;
    }
}

相关文章

网友评论

      本文标题:剑指offer--把数组排成最小的数

      本文链接:https://www.haomeiwen.com/subject/ynvrgqtx.html