670. Maximum Swap
string
Input: num = 2736
Output: 7236
Explanation: Swap the number 2 and the number 7.Input: num = 9973
Output: 9973
Explanation: No swap.解法思路
Last updated
string
Input: num = 2736
Output: 7236
Explanation: Swap the number 2 and the number 7.Input: num = 9973
Output: 9973
Explanation: No swap.Last updated
class Solution:
def maximumSwap(self, num: int) -> int:
digits = list(str(num))
n = len(digits)
max_idx = [0] *n
max_idx[-1] = n-1
for i in range(n-2, -1, -1):
if digits[i] > digits[max_idx[i+1]]:
max_idx[i] = i
else:
max_idx[i] = max_idx[i+1]
for i in range(n):
if digits[i] < digits[max_idx[i]]:
digits[i], digits[max_idx[i]] = digits[max_idx[i]], digits[i]
return int(''.join(digits))
return num