670. 最大交换
给定一个非负整数,你至多可以交换一次数字中的任意两位。返回你能得到的最大值。
示例 1 :
输入: 2736
输出: 7236
解释: 交换数字2和数字7。
示例 2 :
输入: 9973
输出: 9973
解释: 不需要交换。
解题思路
目标就是优先锁定高位,像低位找比当前位更大的,并且位置越后越好,因为越前的位置占的权重越大,而我们交换以后会让低位变小,因此我们是需要优先将小权重的数位变小
代码
class Solution {public int maximumSwap(int num) {char[] chars = String.valueOf(num).toCharArray();int n=chars.length;for (int i=0;i<n;i++){int c=i;for (int j=i+1;j<n;j++){if (chars[i]!=chars[j]&&chars[j]>=chars[c])c=j;}if (c!=i){char t=chars[c];chars[c]=chars[i];chars[i]=t;return Integer.parseInt(new String(chars));}}return num;}
}