问题描述
我有 4 位整数。我必须得到最小数字,它是这些原始数字的组合(不能以零开头)
function changeDigitsOrder(num){
return Number(num.toString().split('').sort().join(''))
}
它适用于没有 0 的数字,但如何从 1500 得到 1005
解决方法
您可以切换零和以下值。
function changeDigitsOrder(num) {
return +num
.toString()
.split('')
.sort((a,b) => a - b)
.join('')
.replace(/(0+)(.)/,'$2$1');
}
console.log(changeDigitsOrder(1500)); // 1005
console.log(changeDigitsOrder(321)); // 123
我玩过解构和lookbehind
const re = /(0{0,})+([1-9]{0,})+/g;
const smallest = num => {
let str = num.toString().split('').sort().join('')
let [parts] = str.matchAll(re)
let [_,zeroes,other] = parts
return +(other.replace(/(?<=^.{1})/,zeroes))
};
console.log(smallest(1500))
console.log(smallest(1245))
console.log(smallest(5421))
console.log(smallest(421))