输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。
例如输入数组[3,32,321]
,则打印出这三个数字能排成的最小数字为321323
。
- 两个字符串拼接只有两种情况,要不就是
ab
要不就是ba
; - 比较
ab
和ba
的大小,小的则排在前面; - 利用数组的
sort
方法对数组重新排序,自定义一个compare
方法; compare
方法中应该是比较前后两个字符串拼接的结果
/**
* 获取数组能拼接处的最小的数
* @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
}