- 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
网友评论