670. 最大交换
给定一个非负整数,你至多可以交换一次数字中的任意两位。返回你能得到的最大值。
示例 1 :
输入: 2736
输出: 7236
解释: 交换数字2和数字7。
示例 2 :
输入: 9973
输出: 9973
解释: 不需要交换。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/maximum-swap
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
题解
创建从大到小的排序数组与原数据比较找出第一个不相同位置,然后从最后开始找到第一个值等于刚才位置排序数组的值,替换两者位置即可得到最大值
/**
* @param {number} num
* @return {number}
*/
var maximumSwap = function(num) {
num = (num + '').split('')
let temp = [...num].sort((a, b) => b - a)
for (let i = 0; i < num.length; i++) {
if (num[i] != temp[i]) {
for (let j = 0; j < num.length; j++) {
if (num[num.length - 1 - j] == temp[i]) {
[num[i], num[num.length - 1 - j]] = [num[num.length - 1 - j], num[i]];
return num.join('') * 1
}
}
break
}
}
return num.join('') * 1
};