(剑指offer) 把数组排成最小的数Javascript解法
题目描述:
输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。
解题思路:
首先将字符串进行排序,将它们两两拼接起来,比较a+b和b+a哪个大,如果a+b>b+a,那就应该将b放在a的前面,a排在b的后面,依次类推
function PrintMinNumber(numbers) {
var result = "";
for(let i = 0; i < numbers.length; i++){
for(let j = i+1; j < numbers.length; j++){
let s1 = numbers[i] + '' + numbers[j]
let s2 = numbers[j] + '' + numbers[i]
if(s1 > s2){
let temp = numbers[i]
numbers[i] = numbers[j]
numbers[j] = temp
}
}
}
for (let m = 0; m < numbers.length; m++) {
result = result + numbers[m];
}
return result;
}
不积跬步无以至千里