给定一个非负整数,你至多可以交换一次数字中的任意两位。返回你能得到的最大值。
示例 1 :
输入: 2736
输出: 7236解释: 交换数字2和数字7。示例 2 :输入: 9973
输出: 9973解释: 不需要交换。思路 使得高位(靠左的)的值更大
s[i]与后面的最大值(若有多个最大值,则取位次最小的,靠右的),交换位置1/** 2 * @param {number} num 3 * @return {number} 4 */ 5var maximumSwap = function(num) { 6 var s = num.toString() 7 8 for(var i=0; imax) max = s[j] 13 } 14 if(max !== init) { 15 s = s.replace(init, max) 16 s = reverseString(s) 17 s = s.replace(max, init) // 保证replace的是位次最小的 18 s = reverseString(s) 19 break 20 } 21 } 22 23 return Number(s) 24} 25 26function reverseString(s){ 27 return s.split('').reverse().join('') 28}