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;}
}