您的位置:首页 > 职场人生

[面试题11]把数组排成最小的数

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

/**
* 输入一个正整数数组,把数组里所有数字拼接起来排成一个数, 打印能拼接出的所有数字中最小的一个。
* 例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
*
* @param n
* @return
*/
public String PrintMinNumber(int[] numbers) {
if (numbers == null || numbers.length == 0) {
return "";
}
String[] num2str = new String[numbers.length];
for (int i = 0; i < numbers.length; i++) {
num2str[i] = String.valueOf(numbers[i]);
}
for(int i = 0;i<numbers.length;i++){
for(int j=0;j<numbers.length-1-i;j++){
if((num2str[j]+num2str[j+1]).compareTo(num2str[j+1]+num2str[j])>0){
String temp = num2str[j];
num2str[j] = num2str[j+1];
num2str[j+1] = temp;
}
}
}
String rs = "";
for(String s:num2str){
rs+=s;
}
return rs;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: