1、题目描述
输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
2、思想
将整数数组转换为字符串数组,然后对整个字符串数组从小到大进行排序,排序规则是,对于数组中的两个数m和n,如果mn<nm,则m应该排在n的前面,否则,m应该排在n的后面。
3、代码实现
import java.util.ArrayList;
public class Solution {
public void sort(String [] s){
for(int i=0;i<s.length;i++){
for(int j=i+1;j<s.length;j++){
String m = s[i];
String n = s[j];
String mn = s[i] + s[j];
String nm = s[j] + s[i];
if(mn.compareTo(nm) > 0){
String temp = "";
temp = s[i];
s[i] = s[j];
s[j] = temp;
}
}
}
}
public String PrintMinNumber(int [] num) {
String [] s = new String[num.length];
for(int i=0;i<s.length;i++){
s[i] = String.valueOf(num[i]);
}
StringBuffer sb = new StringBuffer();
sort(s);
for(String a:s){
sb.append(a);
}
return sb.toString();
}
}