Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

หาตัวเลขสูงสุดได้จากการสลับหลักได้สูงสุด 1 ครั้ง (JavaScript)

ปัญหา

รับตัวเลข 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