华为机试:组成最大数

看了很多python的解答,很多有点问题,只考虑了第一位大小,没有考虑多位相同的时候最后一位不同的先后顺序,我把自己写的放在这里,请大家帮我找找还有没有问题。
"""
题目描述
小组中每位都有一张卡片,卡片上是6位内的正整数,将卡片连起来可以组成多种数字,计算组成的最大数字。
输入
输入描述:
“,”号分割的多个正整数字符串,不需要考虑非数字异常情况,小组最多25个人。
输出描述:
最大的数字字符
示例 1
输入:12,123
输出:12312

示例 2
输入:1230,546,84,32,89,79450,79640
输出:89847964079450546321230
"""
代码:

num_list = list(input().split(','))
max_len = 0
for i in num_list:
    if len(i) > max_len:
        max_len = len(i)

list2 = []
for i in range(0, len(num_list)):
    if len(num_list[i]) < max_len:
        k = max_len - len(num_list[i])
        list2.append([num_list[i] + '0' * k, k])
    else:
        list2.append([num_list[i], -1])
list2.sort(key=lambda x: int(x[0]), reverse=True)
list3 = []
for key in list2:
    list3.append(key[0][0:max_len - key[1]])
print(''.join(list3))#华为机测#
全部评论

相关推荐

1 收藏 评论
分享
牛客网
牛客企业服务