重排数字的最小值

给你一个整数 num 。重排 num 中的各位数字,使其值 最小化 且不含 任何 前导零。

返回不含前导零且值最小的重排数字。

注意,重排各位数字后,num 的符号不会改变。

/**
 * @param {number} num
 * @return {number}
 */
const smallestNumber = (num) => {
    if (num <= 0) {
        return -Math.abs(num).toString().split('').sort().reverse().join('')
    }
    const arr = num.toString().split('').sort()
    const lastZeroIndex = arr.lastIndexOf('0')
    if (lastZeroIndex === -1) {
        return Number(arr.join(''))
    } else {
        const zeroArr = new Array(lastZeroIndex + 1).fill(0)
        return Number(`${arr[lastZeroIndex + 1]}${zeroArr.join('')}${arr.slice(lastZeroIndex + 2).join('')}`)
    }
};

  

posted @ 2023-02-08 16:00  671_MrSix  阅读(26)  评论(0编辑  收藏  举报