Description
You are given an integer num. You can swap two digits at most once to get the maximum valued number.
Return the maximum valued number you can get.
Β
Example 1:
Input: num = 2736 Output: 7236 Explanation: Swap the number 2 and the number 7.
Example 2:
Input: num = 9973 Output: 9973 Explanation: No swap.
Β
Constraints:
- 0 <= num <= 108
Solution
Python3
class Solution:
    def maximumSwap(self, num):
        num = list(str(num))
        mp = collections.defaultdict(int)
 
        for i, x in enumerate(num):
            mp[int(x)] = i
        
        for i, x in enumerate(num):
            for k in range(9, -1, -1):
                if int(x) < k and mp[k] > i:
                    num[i], num[mp[k]] = num[mp[k]], num[i]
                    return int("".join(num))
        
        return int("".join(num))