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


剑指offer

32 把数组排成最小的数


题目描述

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

思路分析

思路:先对输入数组进行选择(升序)排序,然后将数组中数字依次拼接成一个字符串即可。

代码

import java.util.ArrayList;

public class Solution {
    public String PrintMinNumber(int[] numbers) {
        if(numbers.length==0 || numbers==null) return "";
        //选择排序
        for(int i=0;i<numbers.length;i++){
            for(int j=i+1;j<numbers.length;j++){
                int sum1 = Integer.parseInt(numbers[i]+""+numbers[j]);
                int sum2 = Integer.parseInt(numbers[j]+""+numbers[i]);
                if(sum1>sum2){
                    int temp=numbers[i];
                    numbers[i] = numbers[j];
                    numbers[j] = temp;
                }
            }
        }
        StringBuilder res = new StringBuilder();
        for(int num:numbers){
            res.append(num);
        }
        return res.toString();
    }
}

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