(剑指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;
}

 

posted @ 2020-03-25 10:46  leahtao  阅读(346)  评论(0编辑  收藏  举报