給定一個非負整數,你至多可以交換一次數字中的任意兩位。返回你能得到的最大值。
示例 1 :
輸入: 2736
輸出: 7236
解釋: 交換數字2和數字7。
示例 2 :
輸入: 9973
輸出: 9973
解釋: 不需要交換。
注意:
給定數字的范圍是 [0, 10^8]
解題思路:
1、數最大有八位
2、兩兩交換最多交換(1 + 7)* 7 / 2 = 28次
代碼:
class Solution {public int maximumSwap(int num) {char a[] = (num + "").toCharArray();int len = a.length;int maxres = num;for(int i = 0; i < len; i ++)for(int j = i + 1; j < len; j ++) {swap(i, j, a);maxres = Math.max(maxres, Integer.parseInt(new String(a)));swap(i, j, a);}return maxres;}public void swap(int i, int j, char[]a) {char temp = a[i];a[i] = a[j];a[j] = temp;}
}