题目:
从扑克牌中随机抽取5张牌,判断是不是一个顺子,即这5张牌是不是连续的。2~10是数字本身,A为1,J为10,Q为12,K为13,而大小王可以看成任意数字。
思路:
大小王都是特殊数字,可以记为0,和其他扑克牌区分开。
先对数组排序,统计数组中0的个数和空缺的数字的个数。如果0的个数大于等于空缺数字的个数,则是顺子,否则不是。另外,如果数组中出现相同的数字,则一定不是顺子。
实现:
import java.util.Arrays;
public class IsContinue {
public boolean isContinuous(int [] numbers) {
if(numbers==null || numbers.length!=5) return false;
Arrays.sort(numbers);
int zeros=0;
int count=0;
for(int i=0; i<numbers.length; i++){
if(numbers[i]==0){
zeros++;
}
else{
if(i+1<numbers.length){
if(numbers[i+1]==numbers[i]) return false;//有对子
else count+=numbers[i+1]-numbers[i]-1;
}
}
}
if(zeros>=count) return true;
else return false;
}
}