一副扑克牌包含大小王,大小王可以当做任一张牌。从中抽取五张牌,判断这五张牌是不是顺子(A-> 1, J->11, Q->12, K->13, 大小王->0)。
思路:
- 对五张牌排序
- 统计牌中大小王(0)的个数
- 统计牌中不连续的个数, 如果发现有相同元素,一定不是顺子
- 如果不连续个数大于0的个数,说明不够补的,不是顺子。
bool isContinuous(vector<int> numbers)
{
if(numbers.size() == 0)
return false;
int len = numbers.size();
int zero_count = 0;
int gap_count = 0;
sort(numbers.begin(), numbers.end());
int I = 0;
for(; I<len; I++)
if(numbers[I] == 0)
++zero_count;
int small = zero_count;
int big = small + 1;
while(big < len)
{
if(numbers[small] == numbers[big])
return false;
gap_count = numbers[big] - numbers[small] -1;
small = big;
++big;
}
if(gap_count > zero_count)
return false;
else
return true;
}
网友评论