# 0670. Maximum Swap ###### tags: `Leetcode` `FaceBook` `Medium` Link: https://leetcode.com/problems/maximum-swap/ ## 思路 从前往后遍历 对于每一位数找后面大的出现在最后面的最大值(重点在于最大值只可能在0~9之间) **注意: 之后遇到这种把数字拆成一位一位,然后处理,再合起来的,可以不用自己慢慢取余数,直接用String和Integer之间的变换(```String.valueOf(num)```和```Integer.parseInt(s)```) 另外charArray可以直接通过```String(charArray)```变成string** ## Code ```java= class Solution { public int maximumSwap(int num) { String s = String.valueOf(num); int len = s.length(); char[] charArray = s.toCharArray(); int[] last = new int[10]; for(int i = 0;i < s.length();i++){ last[charArray[i]-'0'] = i; } for(int i = 0;i < s.length();i++){ for(int d = 9;d > charArray[i]-'0';d--){ if(last[d]>i){ swap(charArray,i,last[d]); return Integer.parseInt(new String(charArray)); } } } return num; } public static void swap(char[] charArray, int a, int b){ char temp = charArray[a]; charArray[a] = charArray[b]; charArray[b] = temp; } } ``` ## Result Runtime: 0 ms, faster than **100.00%** of Java online submissions for Maximum Swap. Memory Usage: 36.1 MB, less than **45.63%** of Java online submissions for Maximum Swap.