1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| class Solution { public int maximumSwap(int num) { char[] nums = Integer.toString(num).toCharArray(); int n = nums.length, maxIndex = n - 1, p = -1, q = 0; for (int i = n - 2; i >= 0; --i) { if (nums[i] > nums[maxIndex]) { maxIndex = i; } else if (nums[i] < nums[maxIndex]) { p = i; q = maxIndex; } } if (p == -1) { return num; } char temp = nums[p]; nums[p] = nums[q]; nums[q] = temp; return Integer.parseInt(new String(nums)); } }
|