如何在 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
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP