题目描述
输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
解题思路
1.定义新的排序规则
2.将a、b链接为字符串比较ab和ba的大小
3.如果ab>ba,则a排在b之后,如果ba<ab则a排在b之前,如果ab=ba两者顺序不变
代码实现
function PrintMinNumber(numbers)
{
if(numbers.length<=0 || numbers==null){
return "";//返回空字符串
}
for(let i=0;i<numbers.length;i++){
for(let j=i+1;j<numbers.length;j++){
let str1 = String(numbers[i])+String(numbers[j]);
let str2= String(numbers[j])+String(numbers[i]);
if(parseInt(str1)>parseInt(str2)){
let temp = numbers[j];
numbers[j] = numbers[i];
numbers[i] = temp;
}
}
}
let resStr=numbers.join("");
return parseInt(resStr);
}