# 题目描述

输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。

例如输入数组[3,32,321],则打印出这三个数字能排成的最小数字为321323

# 解题思路

  1. 两个字符串拼接只有两种情况,要不就是ab要不就是ba
  2. 比较abba的大小,小的则排在前面;
  3. 利用数组的sort方法对数组重新排序,自定义一个compare方法;
  4. compare方法中应该是比较前后两个字符串拼接的结果

# coding

/**
* 获取数组能拼接处的最小的数
* @params{Array} numbers
* @returns{String|Number}
*/   
function getMinNumber (numbers) {
    if (!numbers || numbers.length === 0) return ''
    return numbers.sort(compare).join('')
}
function compare (a, b) {
    const front = "" + a + b
    const behind = "" + b + a
    return front - behind
}
阅读全文