给定一个非负整数,你至多可以交换一次数字中的任意两位。返回你能得到的最大值。
示例 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;}
}