Skip to content

Latest commit

 

History

History
executable file
·
32 lines (25 loc) · 989 Bytes

把数组排成最小的数.md

File metadata and controls

executable file
·
32 lines (25 loc) · 989 Bytes

题目描述

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

例如输入数组[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
}