算法题/扑克牌顺子

python3

题目:从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。2-10为数字本身,A为1,J为11,Q为12,K为13,而大小王可以看成任意数字。
分析:
0—表示大王小王可以表示任何数字
定义一个字典,其中键存放抽到的扑克牌
情况1:如果键连续为0,就结束本次循环,继续抽牌
情况2:如果键连续为某个非0数,则有重复值不可能是顺子
情况3:如果键值不连续,则进行最后判断
最后:在抽取的五张牌中,如果最大键和最小键之差大于四,则不可能为顺子
特殊情况:输入的数少于5个或者输入的全是0

def is_shunzi(a):
        if len(a) <= 4:
                return False
        if list(set(a)) == [0]:
                return True
        hash_dict = dict()
        for i in a:
                if i == 0:
                        continue
                if i in hash_dict.keys():
                        return False
                else:
                        hash_dict[i] = 100
        result = True if (max(hash_dict.keys())-min(hash_dict.keys())) <= 4 else False
        return result

a = input()
data = [int(x) for x in a.split()]
print(is_shunzi(data))

这里写图片描述

这里写图片描述

你可能感兴趣的:(面试算法题)