Leetcode 670.最大交换
最大交换
给定一个非负整数,你至多可以交换一次数字中的任意两位。返回你能得到的最大值。
示例 1 :
输入: 2736
输出: 7236
解释: 交换数字2和数字7。
示例 2 :
输入: 9973
输出: 9973
解释: 不需要交换。
注意:
- 给定数字的范围是 [0, 108]
思路
1 class Solution { 2 public int maximumSwap(int num) { 3 char[] A = Integer.toString(num).toCharArray(); 4 int[] last = new int[10]; 5 for (int i = 0; i < A.length; i++) { 6 last[A[i] - '0'] = i; 7 } 8 9 for (int i = 0; i < A.length; i++) { 10 for (int d = 9; d > A[i] - '0'; d--) { 11 if (last[d] > i) { 12 char tmp = A[i]; 13 A[i] = A[last[d]]; 14 A[last[d]] = tmp; 15 return Integer.valueOf(new String(A)); 16 } 17 } 18 } 19 return num; 20 } 21 }