ปัญหา
รับตัวเลข num ให้สลับหลักได้สูงสุด 1 ครั้ง เพื่อให้ได้ตัวเลขมากที่สุด หากเป็นค่าสูงสุดแล้วคืนตัวเลขเดิม
ตัวอย่าง
const num = 1625;
สลับ 1 กับ 6 → 6125 (มากที่สุดใน 1 ครั้ง)
โค้ดตัวอย่าง
const num = 1625;
const findMaximumDigit = (num, max = 0) => {
if(!num){ return max; }
return findMaximumDigit(Math.floor(num / 10), Math.max(max, num %10));
};
const makeOneSwap = (num = 1) => {
let i = 0;
const max = findMaximumDigit(num);
const numStr = String(num);
const numArr = numStr.split('');
const maxIndex = numStr.lastIndexOf('' + max);
while(i < maxIndex){
if(+numStr[i] < max){
let temp = numArr[i];
numArr[i] = numArr[maxIndex];
numArr[maxIndex] = temp;
break;
}
i++;
}
return +(numArr.join(''));
};
console.log(makeOneSwap(num));
ผลลัพธ์
6125