把数组排成最小的数java实现

来源:互联网 发布:c语言 n 编辑:程序博客网 时间:2024/06/06 04:36

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

思路:将数字转化为字符串,将字符串字符按ASCII码值从小到大排序,从而得到最小的数。

import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.Arrays;public class Solution {    public String PrintMinNumber(int [] numbers) {        if(numbers == null || numbers.length == 0) return "";        int len = numbers.length;        String[] str = new String[len];        StringBuilder sb = new StringBuilder();        for(int i = 0; i < len; i++){            str[i] = String.valueOf(numbers[i]);        }        Arrays.sort(str,new Comparator<String>(){            @Override            public int compare(String s1, String s2) {                String c1 = s1 + s2;                String c2 = s2 + s1;                return c1.compareTo(c2);            }        });        for(int i = 0; i < len; i++){            sb.append(str[i]);        }        return sb.toString();    }}
原创粉丝点击