def maximum_swap(num: int) -> int:
digits = list(str(num))
n = len(digits)
max_pos = n - 1
left, right = n, n
for i in range(n - 1, -1, -1):
if digits[i] > digits[max_pos]:
max_pos = i
if digits[i] < digits[max_pos]:
left = i
right = max_pos
if left == n or right == n:
return num
digits[left], digits[right] = digits[right], digits[left]
return int("".join(digits))