给定一个非负整数,你至多可以交换一次数字中的任意两位。返回你能得到的最大值。
示例 1 :
输入: 2736
输出: 7236
解释: 交换数字2和数字7。
示例 2 :
输入: 9973
输出: 9973
解释: 不需要交换。
class Solution {
public int maximumSwap(int num) {
char[] c = String.valueOf(num).toCharArray();
int max = Integer.MIN_VALUE;
int max_index = 0;
int [] arr = new int[c.length];
arr[c.length - 1] = c.length - 1;
for (int i = c.length - 1; i >= 0; i --) {
if (c[i] - '0' > max) {
max = c[i] - '0';
max_index = i;
}
arr[i] = max_index;
}
for (int i = 0; i < c.length; i ++) {
if (arr[i] != i && c[arr[i]] != c[i]) {
char tmp = c[i];
c[i] = c[arr[i]];
c[arr[i]] = tmp;
break;
}
}
return Integer.parseInt(new String(c));
}
}
网友评论