---
# System prepended metadata

title: 0670. Maximum Swap
tags: [Leetcode, FaceBook, Medium]

---

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