剑指 Offer Java版剑指offer

剑指Offer Java版 面试题45:把数组排成最小的数

2019-07-31  本文已影响3人  孙强Jimmy

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

练习地址

https://www.nowcoder.com/practice/8fecd3f8ba334add803bf2a06af1b993

参考答案

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;

public class Solution {
    public String PrintMinNumber(int[] numbers) {
        if (numbers == null || numbers.length == 0) {
            return "";
        }
        ArrayList<String> numberList = new ArrayList<>();
        for (int number : numbers) {
            numberList.add(String.valueOf(number));
        }
        Collections.sort(numberList, new Comparator<String>() {
            @Override
            public int compare(String str1, String str2) {
                String combine1 = str1 + str2;
                String combine2 = str2 + str1;
                return combine1.compareTo(combine2);
            }
        });
        StringBuilder sb = new StringBuilder();
        for (String number : numberList) {
            sb.append(number);
        }
        return sb.toString();
    }
}

复杂度分析

👉剑指Offer Java版目录
👉剑指Offer Java版专题

上一篇 下一篇

猜你喜欢

热点阅读