Python的最大交换

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

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

  • num:=从数字中切出每个数字,然后列出

  • num1:=以相反的顺序对num进行排序

  • 索引:= 0

  • 而索引<num的长度

    • 一个:= num子数组,从索引(index +1)到结尾

    • 反转一个

    • a:= a的长度– a索引的num [index]的索引+ +1 – 1

    • num [index],num [a]:= num [a],num [index]

    • 打破循环

    • 如果num1 [index]与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