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 千次觀看

開啟你的 職業生涯

完成課程獲得認證

開始
廣告