Python程式:對給定列表中的所有元素進行排序併合併成字串


假設我們得到一個正整數列表。我們需要將列表按降序排序,然後將所有元素連線起來形成一個字串。最後返回這個連線後的字串。

例如,如果輸入是 input = [415, 78, 954, 123, 5],則輸出將是 954785415123

為了解決這個問題,我們將遵循以下步驟:

  • 定義一個函式 cmp()。它將接收 l 和 r 兩個引數。
    • 如果 (l 的字串表示 + r 的字串表示) 的整數值 > (r 的字串表示 + l 的字串表示) 的整數值,則
      • 返回 1
    • 否則,
      • 返回 -1
  • 根據 compare 函式對列表 input 進行排序
  • 將 input 中的所有元素連線成一個字串並返回。

示例

讓我們來看下面的實現以更好地理解:

from functools import cmp_to_key
def cmp(l, r):
   if int(str(l) + str(r)) > int(str(r) + str(l)):
      return 1
   else:
      return -1

def solve(input):
   input.sort(key=cmp_to_key(cmp), reverse=True)
   return "".join(map(str, input))

print(solve([415, 78, 954, 123, 5]))

輸入

[415, 78, 954, 123, 5]

輸出

954785415123

更新於:2021年10月16日

201 次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.