Maximum Swap
Given a non-negative integer, you could swap two digitsat mostonce to get the maximum valued number. Return the maximum valued number you could get.
Example 1:
Input:
2736
Output:
7236
Explanation:
Swap the number 2 and the number 7.
Example 2:
Input:
9973
Output:
9973
Explanation:
No swap.
Note:
The given number is in the range [0, 108]
分析
排序数组和原数组比较 第一个小于sort的就是需要交换的。记得从右边起找到第一个换,同时要break
最左的小数和最右的大数交换
class Solution:
def maximumSwap(self,num):
"""
:type num: int
:rtype: int
"""
nums = list(map(int, str(num)))
sorted_nums = sorted(nums, reverse=True)
n = len(nums)
for i in range(n):
if nums[i] < sorted_nums[i]:
idx = n - 1 - nums[::-1].index(sorted_nums[i])
nums[idx], nums[i] = nums[i], nums[idx]
break;
return int(''.join(map(str, nums)))
Last updated
Was this helpful?