题目:
从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。其中2~10为数字本身,A为1,J为11,Q为12,K为13,而大小王可以看成任意数字。
解法:
/**
* 将大小王用0表示,与其他牌区分开
* 1.先对数组排序
* 2.统计0的个数
* 3.比较数组要组成顺子的差与0个数
* @param numbers
* @return
*/
public static boolean isContinuous(int [] numbers) {
int length = numbers.length;
if (numbers==null|| length ==0){
return false;
}
Arrays.sort(numbers);
int zeroNum=0;
for (int i = 0; i < length; i++) {
if (numbers[i]!=0){
break;
}
zeroNum++;
}
int diff=0;
for (int i = 0; i < length-1; i++) {
if (numbers[i]==0){
continue;
}
if (numbers[i]==numbers[i+1]){
return false;
}
diff=diff+numbers[i+1]-numbers[i];
}
if (zeroNum>=diff+zeroNum-4){
return true;
}
return false;
}