竞技世界笔试题:对手中的一副扑克牌进行大小排序(python)

竞技世界笔试题:对手中的一副扑克牌进行大小排序(python)

4种花色分别用其大写英文首字母表示: S:Spades,H:Heart,C:Club,D:Dimond
eg.梅花3表示为C3

#%%一手扑克牌比大小 O(n)
#建立一个定义所有牌大小顺序的字典
dic = {'S3':1, 'H3':1, 'C3':1, 'D3':1, 'S4':2, 'H4':2, 'C4':2, 'D4':2, 'S5':3, 'H5':3, 'C5':3, 'D5':3,
       'S6':4, 'H6':4, 'C6':4, 'D6':4, 'S7':5, 'H7':5, 'C7':5, 'D7':5, 'S8':6, 'H8':6, 'C8':6, 'D8':6,
       'S9':7, 'H9':7, 'C9':7, 'D9':7, 'ST':8, 'HT':8, 'CT':8, 'DT':8, 'SJ':9, 'HJ':9, 'CJ':9, 'DJ':9,
       'SQ':10, 'HQ':10, 'CQ':10, 'DQ':10, 'SK':11, 'HK':11, 'CK':11, 'DK':11, 'S1':12, 'H1':12, 'C1':12, 'D1':12,
       'S2':13, 'H2':13, 'C2':13, 'D2':13}

n = 2
c = []
d = []
result ={}
x = input()
#将输入的一手牌拆成每一张牌并且建立一个新的字典,每个key的值暂定为0
for i in range(0,len(x),n):
    c.append(x[i:i+n])
    d.append(0)    
e = dict(zip(c,d))

#将input字典中本来为0的value转化为对应dic中key的value
result = {key:value for key, value in dic.items() if key in e}

#将字典根据value降序排序
#注意sorted函数将本身为字典的result转化成了list
result = sorted(result.items(), key = lambda a:a[1],reverse = True)

#建立一个新的list并且将对应的result的key按顺序append得到降序的排列
f = []
for i in result:
    f.append([i][0][0])
print(''.join(f))

#输入4张牌
S5D7C2H1
#输出排序后的4张牌
C2H1D7S5

没学过算法的小白想了1个小时的结果。。。 求大佬们在评论区留下高级的算法解答 【抱拳了】

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值