给定一个非负整数,你至多可以交换一次数字中的任意两位。返回你能得到的最大值。
示例 1 :
输入: 2736
输出: 7236
解释: 交换数字2和数字7。
示例 2 :
输入: 9973
输出: 9973
解释: 不需要交换。
注意:
var maximumSwap = function (num) {
let arr = String(num).split('');
//右边最大数字位置
let maxpos = arr.length - 1
//p 最左边那个需要交换的位置 q 右边最大数字的最后出现位置
let p = -1, q = 0
for (let i = arr.length - 2; i >= 0; i--) {
if (arr[i] > arr[maxpos]) {
maxpos = i
}
else if (arr[i] < arr[maxpos]) {
p = i
q = maxpos
}
}
if (p === -1) return num;
[arr[p], arr[q]] = [arr[q], arr[p]]
return Number(arr.join(''))
};