我是靠谱客的博主 眼睛大秋天,这篇文章主要介绍扑克牌顺子,现在分享给大家,希望可以做个参考。

思路:

(1)利用数组给牌排序,单独统计0的数量;

(2)定位到扑克牌第一张牌,向后寻找空缺,用0牌填充;

(3)若0牌还有剩余,从扑克牌的第一张牌向前填充;

(4)0牌依然剩余,不存在顺子,此时牌数大于13;

(5)从顺子向后检查,若存在间断的牌,不存在顺子,否则这副牌符合顺子要求。

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
public static boolean isContinuous(int [] numbers) { if(numbers==null||numbers.length==0) return false; //变量定义 boolean answer=false; boolean[] arrayForSort=new boolean[14]; int zeroCount=0; //借助哈希表排序 Arrays.fill(arrayForSort,false); for(int elem:numbers){ //检查不符合规范的数字 if(elem<0||elem>13) { answer=false; return answer; } //0牌单独统计 else if(elem==0){ zeroCount++; } //已经存在相同的牌,不存在顺子 else { if(arrayForSort[elem]){ answer=false; return answer; } else { arrayForSort[elem]=true; } } } //检查是否为顺子 int index=0; //定位到顺子(这里定位到了顺子的第二张) while(index<14&&!arrayForSort[index++]); //填充空白 for(int i=index;i<14&&(zeroCount>0);i++){ if(!arrayForSort[i]){ arrayForSort[i]=true; zeroCount--; } } //后面填满,向前填充 for(int i=index-2;i>=0&&(zeroCount>0);i--){ arrayForSort[i]=true; zeroCount--; } //还有0牌剩余,说明出现牌数量大于13 if(zeroCount>0) { answer=false; return answer; } //检查顺子之后是否还有不连续的牌 while(index<14&&arrayForSort[index++]); while(index<14&&!arrayForSort[index++]); if(index>=14) answer=true; return answer; }

 

最后

以上就是眼睛大秋天最近收集整理的关于扑克牌顺子的全部内容,更多相关扑克牌顺子内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(55)

评论列表共有 0 条评论

立即
投稿
返回
顶部