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