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.