Computer >> 컴퓨터 >  >> 프로그램 작성 >> JavaScript

JavaScript에서 최대 하나의 스왑을 사용하여 최대 수 찾기

<시간/>

숫자를 첫 번째이자 유일한 인수로 사용하는 JavaScript 함수를 작성해야 합니다.

우리 함수의 임무는 숫자의 두 자리 사이에서 최대 한 번 스왑을 수행하고 가능한 최대 숫자를 산출하는 것입니다. 그러나 숫자가 이미 가능한 최대 숫자인 경우 숫자 자체를 반환해야 합니다.

예를 들어 -

입력 번호가 -

인 경우
const num = 1625;

그러면 출력은 다음과 같아야 합니다. -

const output = 6125;

우리는 1과 6을 교환했으며 이것이 단일 교환에서 가장 많은 수를 산출하는 유일한 교환입니다.

예시

이에 대한 코드는 -

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;
      };
   };
   return +(numArr.join(''));
};
console.log(makeOneSwap(num));

출력

콘솔의 출력은 -

6125