maximum swap
Credit: awice
1class Solution:
2 def maximumSwap(self, num):
3 A = [*map(int, str(num))]
4 last = {x: i for i, x in enumerate(A)}
5 for i, x in enumerate(A):
6 for d in range(9, x, -1):
7 if last.get(d, 0) > i:
8 A[i], A[last[d]] = A[last[d]], A[i]
9 return int("".join(map(str, A)))
10 return num
11
12
13s = Solution()
14m = s.maximumSwap
15
16assert m(675442) == 765442
17assert m(109132) == 901132
18assert m(650931) == 950631
19assert m(546596) == 946556