# 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.