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

题目

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

思路

我们可以先将整个数组按照字符串顺序排好顺序,例如3和30,因为303一定小于330,所以30在3的前面,如此按照顺序排好,最后在拼接成字符串即可

代码

注意lambda表达式的使用

public String minNumber(int[] nums) {
    String[] arr = new String[nums.length];
    for(int i = 0;i<nums.length;i++)
        arr[i] = String.valueOf(nums[i]);
    Arrays.sort(arr, (a,b)->
            {return (a+b).compareTo(b+a);}
            );
    StringBuffer s = new StringBuffer();
    for(String ss : arr){
        s.append(ss);
    }
    return s.toString();
}
posted @ 2020-09-01 12:26  珂珂哒  阅读(92)  评论(0)    收藏  举报