1095.最大的交换

  • Description
    给定一个非负整数,你可以交换两个数位至多一次来获得最大的合法的数。返回最大的合法的你能够获得的数。
  • Samples:
    输入: 9973
    输出: 9973
    解释: 不用交换.
    输入: 2736
    输出: 7236
    解释: 交换数字2和数字7.
  • Solution
    先将数的每一位转换为数组,再设置2个参考点From、To,判断是否能交换,再输出。
class Solution:
    """
    @param num: a non-negative intege
    @return: the maximum valued number
    """
    def maximumSwap(self, num):
        # Write your code here
        if num<=10:
            return num
        nums = []
        if num==0:
            nums.append(0)
        while num!=0:
            nums.append(num%10)
            num = num//10
        From,Max = 0, nums[0]
        To, Max_index = 0, 0
        for i in range(1,len(nums)):
            if Max < nums[i]:
                Max = nums[i]
                Max_index = i
            elif Max > nums[i]:
                From = Max_index
                To = i
        if To!=0:
            nums[From],nums[To] = nums[To],nums[From]
        res = 0
        for k in range(len(nums)):
            res = res + nums[k]*10**k
        return res
#        return nums

你可能感兴趣的:(1095.最大的交换)