扑克中的顺子

题目:

从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。2~10为数字本身,A为1,J为11,Q为12,K为13,而大、小王为 0 ,可以看成任意数字。注:A 不能视为 14

示例:

A 2 3 4 5 =>True

0 2 0 4 5 =>True

6 7 9 10 13 =>False

解析:

这一题看上去较为简单,只需将输入的五个数进行排序即可。因为有大小王的存在,我们可以考虑每两张牌之间的差值。

在排除大小王的情况下,我们的目标顺子中,五张牌每两张牌之差加起来的数值是4 <5

由此,给出以下代码

def isStraight(nums):
    nums.sort()
    sub=0
    for i in range(5):
        if nums[i] == 0: //排除大小王的干扰
            continue
        if i == 4://防止下标越界
            continue
        elif nums[i] == nums[i+1]://判断是否为对子
            return false
        sub += nums[i+1]-nums[i]
    return sub < 5

 

posted @ 2020-03-12 17:22  艾森小人物  阅读(105)  评论(0)    收藏  举报