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
廣告