记录一次华为笔试

2019-08-24  本文已影响0人  LegendGo

题目内容

输入一串字符串,输出里面字符的个数,并按照次数从高到低输出,同时如果次数相同的,按照出现的字符串位置的先后顺序进行排序。
输入aaabbBBddcc
输出
a=3

b=2
B=2
d=2
c=2
Python代码实现如下

import sys
def get_first_position(tmg_list,one_arg):
    return tmg_list.index(one_arg)


def sort_dict(target_dict:dict,message_list:list):
    tmp_list = reversed(sorted(list(set(target_dict.values()))))
    for one_value in tmp_list:
        one_list = []
        for key,value in target_dict.items():
            if one_value == value:
               one_list.append(key)

        if len(one_list) == 1:
            print("{}={}".format(one_list[0],one_value))
        else:
            tmp_dict = {}
            for one_key in one_list:
                tmp_dict[get_first_position(message_list,one_key)] = one_key
            positionkeys = sorted(tmp_dict.keys())
            for positionkey in positionkeys:
                print("{}={}".format(tmp_dict[positionkey],one_value))


def main(target_arg):
    target_dict = {}
    if len(target_arg) >= 100:
        print(">= 100")
        return
    if len(target_arg) == 0:
        print("=0")
        return
    message_list = list(target_arg)
    mesaage_keys = target_dict.keys()
    for one_message in message_list:
        try:
            int(one_message)
        except Exception as e:
            if one_message in mesaage_keys:
                tmp_value = target_dict[one_message] + 1
                target_dict[one_message] = tmp_value
            else:
                target_dict[one_message] = 1
        else:
            continue
    sort_dict(target_dict,message_list)

if __name__ == "__main__":
    main(sys.argv[1])

自己本地跑是正常的,但是线上一直提示报错,不知道为什么,时间仓促写的负载了,后面把这个简化了
后面还是要每周刷刷LetCode,真的很重要

上一篇 下一篇

猜你喜欢

热点阅读