问题描述

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

示例 1:

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

示例 2:

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

问题分析

代码实现

  1. class Solution {
  2. public String minNumber(int[] nums) {
  3. String[] strs = new String[nums.length];
  4. for(int i=0; i < nums.length; i++){
  5. strs[i] = String.valueOf(nums[i]);
  6. }
  7. Arrays.sort(strs, new Comparator<String>() {
  8. @Override
  9. public int compare(String x, String y) {
  10. return (x+y).compareTo((y+x));
  11. }
  12. });
  13. StringBuilder sb = new StringBuilder();
  14. for(String num : strs){
  15. sb.append(num);
  16. }
  17. return sb.toString();
  18. }
  19. }