题目
- 题目:从扑克牌中随机抽5张牌,判断是不是一个顺子, 即这5张牌是不是连续的。 2~10为数字本身, A为1。 J为11、Q为12、 为13。大小王可以看成任意数字
解法
/**
* 扑克牌是否为顺子
* 题目:从扑克牌中随机抽5张牌,判断是不是一个顺子, 即这5张牌是不是连续的。
* 2~10为数字本身, A为1。 J为11、Q为12、 为13。大小王可以看成任意数字。
*
* @param arr
* @return
*/
public static boolean isStraight(int[] arr) {
if (arr == null || arr.length != 5) return false;
// 排序
Arrays.sort(arr);
// 0的数量
int zeroCount = 0;
// 间隔数量
int gapCount = 0;
// 查询0的数量
for (int j : arr) {
if (j == 0) {
zeroCount++;
}
}
// 一副扑克中王的数量最多两个
if (zeroCount > 2) return false;
int small = zeroCount;
int big = small + 1;
// 查询间隔数量
while (big < arr.length) {
if (arr[small] == arr[big]) {
return false;
}
gapCount += (arr[big] - arr[small] - 1);
small = big;
big++;
}
return zeroCount >= gapCount;
}