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

    科技2022-07-10  135

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

    题目

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

    输入: [10,2] 输出: “102”

    解法

    此题求拼接起来的 “最小数字” ,本质上是一个排序问题。 排序判断规则: 设 nums 任意两数字的字符串格式 x 和 y ,则 若拼接字符串 x+y>y+x ,则 m>n ; 反之,若 x+y<y+x ,则 n<m ;

    class Solution { public String minNumber(int[] nums) { StringBuilder stb = new StringBuilder(); int n = nums.length; String[] strs = new String[n]; for(int i = 0 ; i < n ; ++i){ strs[i] = String.valueOf(nums[i]); } //排序 Arrays.sort(strs,(x,y)->(x+y).compareTo(y+x)); for(String s : strs){ stb.append(s); } return stb.toString(); } }
    Processed: 0.011, SQL: 8