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
  • 将存在于 num 中的数字连接起来并将其作为整数
  • 返回结果。

示例(Python)

让我们看看以下实现以获得更深入的了解:

 Live Demo

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

更新于: 2020 年 4 月 29 日

1 千次观看

开启你的 职业生涯

完成课程获得认证

开始
广告