Python 中的最大值交换
假设我们有一个非负整数;我们可以交换两位数字,至多一次,以获得最大值。我们必须返回我们能获得的最大值。因此,如果输入类似于 2736,则输出将是 7236。因此,在这里我们交换 2 和 7。
为了解决此问题,我们将按照以下步骤进行:
- num:从数字中提取每个数字,然后生成一个列表
- num1:按降序对 num 进行排序
- index:0
- 在 index < num 的长度时
- 如果 num1[index] 与 num[index] 不同
- a:从 index(index + 1)到结束的 num 子数组
- 反转 a
- a:a 的 a - num[index] 的 index 的长度 + index + 1 - 1
- num[index],num[a]:num[a],num[index]
- break 循环
- 将 index 加 1
- 如果 num1[index] 与 num[index] 不同
- 将存在于 num 中的数字连接起来并将其作为整数
- 返回结果。
示例(Python)
让我们看看以下实现以获得更深入的了解:
class Solution: def maximumSwap(self, num): num = list(map(int,list(str(num)))) num1 = sorted(num,reverse=True) index=0 while index<len(num): if num1[index]!=num[index]: a = num[index+1:] a.reverse() a=len(a) - a.index(num1[index])+index+1 -1 num[index],num[a] = num[a],num[index] break index+=1 return int("".join(str(x) for x in num)) ob1 = Solution() print(ob1.maximumSwap(5397))
输入
5397
输出
9357
广告