Python 中的最大交换

pythonserver side programmingprogramming更新于 2025/11/4 1:16:17

假设我们有一个非负整数;我们最多可以交换两个数字一次以获得最大值。我们必须返回我们可以得到的最大值。因此,如果输入是 2736,则输出将是 7236。所以这里我们交换 2 和 7。

为了解决这个问题,我们将遵循以下步骤 −

  • num := 从数字中截取每个数字,并创建一个列表
  • num1 := 按相反顺序对数字进行排序
  • index := 0
  • while index < num 的长度
    • 如果 num1[index] 与 num[index] 不同
      • a := num 的子数组,从索引 (index + 1) 到结束
      • 反转 a
      • a := a 的长度 – a 的 num[index] 的索引 + index + 1 – 1
      • num[index], num[a] := num[a], num[index]
      • 中断循环
    • 将索引增加 1
  • 连接 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

相关文章


有用资源