在 JavaScript 中,使用最多一次交换来查找最大数字

javascriptweb developmentfront end technology

我们需要编写一个 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

相关文章