您的位置:首页 > Web前端

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

2018-01-26 10:32 405 查看
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));
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐