首页 > 解决方案 > 整数字符串的自定义比较

问题描述

对于输入3 30 34 5 9,预期的最大输出数为:9534330

任何输入为什么排序返回与输入相同的结果:3303459

import functools

def compare(item1, item2):
    return int(item1 + item2) - int(item2 + item1)

inputList = input().split()
sorted(inputList, key=functools.cmp_to_key(compare))
max = "".join([ x for x in inputList])
print(max)

标签: pythonpython-3.x

解决方案


原因是因为您以错误的顺序对列表进行排序并且您没有使用排序列表。目前,您正在按第一位数字升序对列表进行排序。除此之外,sorted()函数返回一个新列表,因此您需要将其保存在变量中。

您可以通过使用reverse()排序列表上的

import functools

def compare(item1, item2):
    return int(item1 + item2) - int(item2 + item1)

inputList = input().split()
inputList = sorted(inputList, key=functools.cmp_to_key(compare))
inputList.reverse()
max = "".join([ x for x in inputList])
print(max)

或者在compare()函数中切换操作

import functools

def compare(item1, item2):
    return int(item2 + item1) - int(item1 + item2)

inputList = input().split()
inputList = sorted(inputList, key=functools.cmp_to_key(compare))
max = "".join([ x for x in inputList])
print(max)

推荐阅读