从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。2-10为数字本身,A为1,J为11,Q为12,K为13,而大小王可以看成任意数字。在题目中用0表示大小王。
bool isContinuous(vector<int> numbers, int maxNum)
{
if (numbers.size() < 1 || maxNum < 1)
{
return false;
}
int buf[5];
memset(buf, 0, sizeof(buf));
int numOfZero = 0;
for (int i = 0; i < numbers.size(); i++)
{
if (numbers[i] == 0)
{
numOfZero++;
}
else
{
int pos = numbers[i] - maxNum + 4;
if (pos >= 0)
{
if (buf[pos] > 0)
{
return false;
}
else
{
buf[pos] = 1;
}
}
}
}
int gap = 0;
for (int i = 0; i < 5; i++)
{
if (buf[i] == 0)
{
gap++;
}
}
if (numOfZero >= gap)
{
return true;
}
return false;
}