offer-45


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

示例 1:

输入: [10,2]
输出: "102"

示例 2:

输入: [3,30,34,5,9]
输出: "3033459"

提示:

  • 0 < nums.length <= 100

说明:

  • 输出结果可能非常大,所以你需要返回一个字符串而不是整数
  • 拼接起来的数字可能会有前导 0,最后结果不需要去掉前导 0

//leetcode submit region begin(Prohibit modification and deletion)
class Solution {
    public String minNumber(int[] nums) {
        List<Integer> numList = new ArrayList<>();

        for (int num : nums) {
            numList.add(num);
        }

        numList.sort(new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                int index1 = 0;
                int index2 = 0;
                String s1 = o1.toString();
                String s2 = o2.toString();

                return (s1 + s2).compareTo(s2 + s1);
            }
        });

        StringBuilder sBuilder = new StringBuilder();
        for (Integer num : numList) {
            sBuilder.append(num);
        }
        return sBuilder.toString();
    }
}
//leetcode submit region end(Prohibit modification and deletion)

文章作者: 倪春恩
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 倪春恩 !