数字拼接

  • Post author:
  • Post category:其他


题目描述

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

输入[3,32,321]

返回值”321323″

代码:

import java.util.ArrayList;

public class Solution {
    public String PrintMinNumber(int [] numbers) {
        if(numbers == null || numbers.length == 0) return "";
        StringBuilder str = new StringBuilder();
        for(int i = 0; i < numbers.length; i++){
            // 依次交换
            for(int j = i + 1; j < numbers.length; j++){
                // 字符串排序法:判断如果相加之后的数字,来把小数交换到前
                int sum1 = Integer.valueOf(numbers[i] + "" + numbers[j]);
                int sum2 = Integer.valueOf(numbers[j] + "" + numbers[i]);
                if(sum1 > sum2){
                    int temp = numbers[i];
                    numbers[i] = numbers[j];
                    numbers[j] = temp;
                }
            }
            str.append(numbers[i]);
        }
        return str.toString();
    }
}



版权声明:本文为qq_41984724原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。