剑指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();
}
}