《剑指offer》-从扑克牌中随机取5张,判断是不是一个顺子

import java.util.Arrays;
/*
 * 从扑克牌中随机取5张,判断是不是一个顺子
 * 其中A看成1,J,Q,K分别看成11,12,13,大小王可以看成0
 * 也就是说输入的5个数字范围是0-13,其中0可以任意变换填充空缺。
 */
public class IsContinuous {
	 public boolean isContinuous(int [] numbers) {
		 if(numbers.length == 0)	return false;
		 
		 //排序
		 Arrays.sort(numbers);
		 
		 //判断0的个数
		 int count = 0;
		 for(int i = 0;i < numbers.length; i++) {
			 if(numbers[i] == 0) {
				 count ++;
			 }
		 }
		 
		 //去除0
		 int numbers2[] = new int[numbers.length - count];
		 int index = 0;
		 for(int i = 0;i < numbers.length; i ++) {
			 if(numbers[i] != 0) {
				 numbers2[index ++] = numbers[i];
			 }
		 }
		 
		 //判断是否含有对子(去除0)
		 for(int i = 0;i < numbers2.length - 1; i++) {
			 if(numbers2[i] == numbers2[i + 1]) {
				 return false;
			 }
		 }
		 
		 //判断空缺个数(去除0),看需要几个0去填补
		 int number_vacant = 0;
		 for(int i = 0;i < numbers2.length - 1; i++) {
			 number_vacant = number_vacant + 
					 (numbers2[i + 1] - numbers2[i] - 1);
		 }
		 
		 if(count < number_vacant)	return false;
		 else	return true;
	 }
	 
	public static void main(String[] args) {
		 int[] numbers = {1,2,4,5,6};
		 System.out.println(new IsContinuous().isContinuous(numbers));
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值