竞技世界笔试题:对手中的一副扑克牌进行大小排序(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个小时的结果。。。 求大佬们在评论区留下高级的算法解答 【抱拳了】