Vấn đề
Chúng ta cần viết một hàm JavaScript nhận vào một số dương n. Ta có thể thực hiện tối đa một phép toán: chọn chỉ số của một chữ số trong số, loại bỏ chữ số tại chỉ số đó và chèn nó lại ở vị trí khác hoặc cùng vị trí để tìm số nhỏ nhất có thể. Hàm trả về số nhỏ nhất này.
Ví dụ
Dưới đây là mã nguồn:
const num = 354166;
const smallestShuffle = (num) => {
const arr = String(num).split('');
const { ind } = arr.reduce((acc, val, index) => {
let { value, ind } = acc;
if(value > val){
value = val;
ind = index;
};
return { value, ind };
}, { value: Infinity, ind: -1 });
const [item] = arr.splice(ind, 1);
arr.unshift(item);
return Number(arr.join(''));
};
console.log(smallestShuffle(num));Kết quả
Kết quả đầu ra trong console:
135466