Cần viết hàm JS nhận một số, thực hiện tối đa một lần hoán đổi giữa hai chữ số bất kỳ để tạo ra số lớn nhất có thể. Nếu số đã là lớn nhất, trả về chính nó.
Ví dụ:
Nếu số đầu vào:
const num = 1625;
Kết quả:
const output = 6125;
Hoán đổi 1 và 6 cho số lớn nhất chỉ sau một lần hoán đổi.
Ví dụ
Mã thực hiện:
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));
Kết quả
Kết quả in ra console:
6125