给定一个非负整数,你至多可以交换一次数字中的任意两位。返回你能得到的最大值。
示例 1 :
输入: 2736 输出: 7236 解释: 交换数字2和数字7。
示例 2 :
输入: 9973 输出: 9973 解释: 不需要交换。
注意:
- 给定数字的范围是 [0, 108]
class Solution: def maximumSwap(self,num): b=list(str(num)) list_num=list(map(int,b))#数字的列表形式 list_num_sort=sorted(list_num,reverse=True)#从大到小的排序形式 for i in range(len(list_num)):#找到某一位不是最大数 if list_num[i]<list_num_sort[i]:#第i位不是最大数 break if i>=len(list_num)-1:#如果i到最后一位仍然是最大数,那么结束循环 return num else:#我们找到了第i位不是最大的,因此需要找到需要交换的位置,它的值为list_num_sort[i] index1=i index2=len(list_num)-1-list_num[::-1].index(list_num_sort[i]) list_num[index1],list_num[index2]=list_num[index2],list_num[index1] res=list(map(str,list_num)) res=int(''.join(res)) return res