题目:从扑克牌中随机抽取5张牌,判断是不是一个顺子,即这5张牌是不是连续的,2--10位数字本身,A为1,J为11,Q为12,K为13,大王、小王可以看成任意数字
分析:可以把5张牌看成5个数字组成的数组,先把数组排序,再统计数组中0的个数,最后统计排序之后的数组中相邻数字之间的空缺总数,如果空缺总数小于0的个数,说明是可以填补的,即为true
import java.util.Arrays; public class wr44IsContinuous { public static boolean isContinuous(int [] numbers) { if(numbers==null || numbers.length==0){ return false; } // 把数组排序 Arrays.sort(numbers); // 统计数组中0的个数 int zeroCount=0; for(int i=0;i<numbers.length;i++){ if(numbers[i]==0){ zeroCount++; } } // 统计排序之后数组中相邻数字之间的空缺总数 int number=0; for(int i=zeroCount;i<numbers.length-1;i++){ if(numbers[i]==numbers[i+1]){ return false; } number=number+numbers[i+1]-numbers[i]-1; } // 如果空缺数比0的数大,则填不满,返回false return (number>zeroCount)?false:true; } public static void main(String[] args) { // TODO Auto-generated method stub int []a={0,0,4,5,6}; System.out.println(isContinuous(a)); } }