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?