字符统计

字符统计

http://www.nowcoder.com/questionTerminal/c1f9561de1e240099bdb904765da9ad0

while True:
    try:
        s = input()
        ss = sorted(list(set(s)), key=lambda x:s.count(x)*1000-ord(x), reverse=True)
        print("".join(ss))
    except:
        break

全部评论
确实牛,乘数1000改成任意比123(对应a~z的最大ASCII码)大的数应该都可以,这样可能会更方便其他小伙伴理解
1 回复 分享
发布于 2022-04-14 01:55
66666
1 回复 分享
发布于 2021-07-24 22:18
我看到了1000就意识到这是要整活了
9 回复 分享
发布于 2021-08-18 11:08
可以双重排序的 s = input() res = list(set(s)) res.sort(key=lambda x: (-s.count(x), ord(x))) # 先按照字符统计个数降序,再按照ascii码升序 print(''.join(res))
4 回复 分享
发布于 2022-07-14 23:19
s.count(x)*1000-ord(x) 妙啊
3 回复 分享
发布于 2021-05-25 21:28
好像sort,sorted可以实现双重排序
2 回复 分享
发布于 2022-05-13 21:53
我哭啦,我写了几十行搞了3h,一看题解emo了 谁安慰我一下
2 回复 分享
发布于 2022-04-15 14:45
line=input() count=sorted(list(set(line)),key=lambda x:(-line.count(x),ord(x))) print("".join(count))
1 回复 分享
发布于 2022-07-08 14:46
大佬牛逼。ASCII最大255,乘以256足矣。
1 回复 分享
发布于 2022-06-12 23:49
和我的想法差不多 s, dic = input(), {} for i in set(s): dic[i] = s.count(i) x = dict(sorted(dic.items(), key= lambda x:(x[1],1-ord(x[0])), reverse=True)) [print(i, end='') for i in x.keys()]
1 回复 分享
发布于 2022-05-03 19:44
虽然sorted可以双重排序 但是挡不住妙啊 妙啊!
点赞 回复 分享
发布于 2024-03-13 21:52 江苏
妙啊
点赞 回复 分享
发布于 2023-10-20 14:37 广东
res = sorted(unique_str1,key = lambda x:(-str1.count(x),ord(x)))
点赞 回复 分享
发布于 2023-06-14 22:51 陕西
妙啊
点赞 回复 分享
发布于 2022-10-10 04:49 美国
一个字符串,为不同字母出现次数的降序表示。题目中specify输出的只有字母,因此引入正则包来提取字母: import re while True: try: s = input() s1=re.findall(r'[A-Za-z]',s)##也可以是re.findall(r'[^0-9]',s) ss = sorted(list(set(s1)), key=lambda x:s.count(x)*1000-ord(x), reverse=True) print("".join(ss)) except: break
点赞 回复 分享
发布于 2022-09-30 17:33 河北
大神
点赞 回复 分享
发布于 2022-08-30 20:55 广东
这思路清奇是做算法的好苗子
点赞 回复 分享
发布于 2022-08-12 11:13
思路真的牛逼
点赞 回复 分享
发布于 2022-06-08 22:00
妙啊
点赞 回复 分享
发布于 2022-05-27 23:58
秀!
点赞 回复 分享
发布于 2022-04-16 19:34

相关推荐

野猪不是猪🐗:我assume that你must技术aspect是solid的,temperament也挺good的,however面试不太serious,generally会feel style上不够sharp
点赞 评论 收藏
分享
评论
195
26
分享

创作者周榜

更多
牛客网
牛客企业服务