华为OD机试第一题。

题目描述:

给一个数组,逗号隔开的,然后统计每个数字出现的次数,输出结果按大到小排序,次数相同的,按原来在数组里的左右顺序排。

解答:

这个题似乎是做过的,但是一时短路,只好用笨方法统计,手动排了下。

import sys 
for line in sys.stdin:
    nums = line.strip().split(",")
    res = []
    res2 = []
    for index, num in enumerate(nums):
        num = int(num)
        if num in res:
            res2[res.index(num)] += 1
        else:
            res.append(num)
            res2.append(1)
    length = len(res)
    _res = []
    for i in range(length):
        max_index = res2.index(max(res2))
        _ = res2.pop(max_index)
        _res.append(str(res.pop(max_index)))
    print(",".join(_res))

标签: none

添加新评论