670. Maximum Swap
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
maximum-swap.py
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))