670. 最大交换

给定一个非负整数,你至多可以交换一次数字中的任意两位。返回你能得到的最大值。

示例 1 :

1
2
3
输入: 2736
输出: 7236
解释: 交换数字2和数字7。

示例 2 :

1
2
3
输入: 9973
输出: 9973
解释: 不需要交换。

注意:

  1. 给定数字的范围是 [0, 108]

算法思路:暴力遍历

代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
class Solution {
public int maximumSwap(int num) {
//将数字转换为字符数组
char[] charArray = String.valueOf(num).toCharArray();

int max = num;
int n = charArray.length;
//将数组中的元素两两比较
for (int i = 0; i < n; i++) {
for (int j = i + 1; j < n; j++) {
//交换对比最大值
swap(charArray, i, j);
//更新最大值
max = Math.max(max, Integer.parseInt(new String(charArray)));
//还原
swap(charArray, i, j);

}
}
return max;

}


public void swap(char[] chars, int i, int j) {
char temp = chars[i];
chars[i] = chars[j];
chars[j] = temp;
}
}