Maximum Swap
Thoughts
Code
class Solution {
public int maximumSwap(int num) {
char[] nums = Integer.toString(num).toCharArray();
int[] lastShown = new int[10];
for (int i = 0; i < nums.length; i++) {
lastShown[nums[i] - '0'] = i;
}
for (int i = 0; i < nums.length; i++) {
for (int j = 9; j > nums[i] - '0'; j--) {
if (lastShown[j] > i) {
swap(nums, i, lastShown[j]);
return Integer.valueOf(new String(nums));
}
}
}
return num;
}
private void swap(char[] nums, int i, int j) {
char tmp = nums[i];
nums[i] = nums[j];
nums[j] = tmp;
}
}Analysis
Last updated