给定一个非负整数,你至多可以交换一次数字中的任意两位。返回你能得到的最大值。
示例 1 :
输入: 2736
输出: 7236
解释: 交换数字2和数字7。
示例 2 :
输入: 9973
输出: 9973
解释: 不需要交换。
注意:
给定数字的范围是 [0, 108]
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/maximum-swap
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
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));
}
}
作者:aung
链接:https://leetcode-cn.com/problems/maximum-swap/solution/shi-jian-fu-za-du-onde-jie-fa-by-aung/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。