题目描述
输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
解题思路:选择排序的思想
首先,将整数数组转为字符串数组,再进行字符串的从小到大排序,最后依据顺序连接起来即可。
import java.util.ArrayList;
public class Solution {
int len = 0;
String min = "";
String[] stunum;
public String PrintMinNumber(int [] numbers) {
if(numbers == null || numbers.length ==0){
return "";
}
len = numbers.length;
stunum = new String[len];
for(int i=0;i<len;i++){
stunum[i] = Integer.toString(numbers[i]);
}
num_sort();
return min;
}
String num_sort(){
for(int i = 0;i<len;i++){
int min_number = i;
for(int j =i+1;j<len;j++){
String a = stunum[min_number]+stunum[j];
String b = stunum[j] + stunum[min_number];
if(a.compareTo(b) > 0){
min_number = j;
}
}
if(min_number != i){
String temp = stunum[min_number];
stunum[min_number] = stunum[i];
stunum[i] = temp;
}
}
String temp = "";
for(int k = 0;k<stunum.length;k++){
temp += stunum[k];
}
min = temp;
return min;
}
}