给定一个非负整数,你至多可以交换一次数字中的任意两位。返回你能得到的最大值。
解析
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| var maximumSwap = function (num) { const digits = String(num).split(''); const last = {}; digits.forEach((d, i) => last[d] = i); for (let i = 0; i < digits.length; i++) { for (let d = 9; d > +digits[i]; d--) { if (last[d] > i) { [digits[i], digits[last[d]]] = [digits[last[d]], digits[i]]; return +digits.join(''); } } } return num; };
|