题目描述:
给定一个非负整数,你至多可以交换一次数字中的任意两位。返回你能得到的最大值。
示例 1 :
输入: 2736
输出: 7236
解释: 交换数字2和数字7。
示例 2 :
输入: 9973
输出: 9973
解释: 不需要交换。
注意:
给定数字的范围是 [0, 108]
解题思路:
class Solution {
public int maximumSwap(int num) {
char[] chars = Integer.toString(num).toCharArray();
int maxIndex = chars.length - 1;
int[] maxArr = new int[chars.length];
for (int i = chars.length - 1; i >= 0; i--) {
if (chars[i] > chars[maxIndex]) {
maxIndex = i;
}
maxArr[i] = maxIndex;
}
for (int i = 0; i < chars.length; i++) {
if (chars[maxArr[i]] != chars[i]) {
char temp = chars[maxArr[i]];
chars[maxArr[i]] = chars[i];
chars[i] = temp;
break;
}
}
return Integer.parseInt(new String(chars));
}
}