【剑指offer字符串】JZ45扑克牌顺子

这篇博客介绍了一个用于判断五张扑克牌是否构成顺子的C++代码实现。代码首先剔除数字0,然后对非0数字进行排序,检查最大值与最小值之差是否大于5,以及是否有重复数字,如果满足条件则返回true,否则返回false。
摘要由CSDN通过智能技术生成

描述

现在有五张扑克牌,我们需要来判断一下是不是顺子。
有如下规则:
A为1,J为11,Q为12,K为13
数据中的0可以看作任意牌
如果给出的五张牌能组成顺子(即这五张牌是连续的)就输出true,否则就输出false。
例如:给出数据[6,0,2,0,4]
中间的两个0一个看作3,一个看作5 。即:[6,3,2,5,4]
这样这五张牌在[2,6]区间连续,输出true
数据保证每组5个数字,每组最多含有4个零

代码

class Solution {
public:
    bool IsContinuous( vector<int> numbers ) {
        vector<int> v;
        for (auto it = numbers.begin(); it != numbers.end(); it++)
        {
            if (*it != 0) v.push_back(*it);
        }
        
        sort(v.begin(), v.end());
        
        int vL = v.size();
        int max = v[vL-1] - v[0];
        if (max >= 5)
        {
            return false;
        }
        else
        {
            for (int i = 1; i < vL; i++)
            {
                if (v[i-1] == v[i])
                {
                    return false;
                }
            }
        }
        
        return true;
     }
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值