解决这个问题的思路:首先,将数组排序,找出其中0的数目(大小王),统计排序之后相邻数字之间的空缺数字个数。如果空缺的总数小于等于0的数字,则是个顺子。
还要注意一点:如果数组中的非0数字有重复出现,则该数组不是顺子
package six;
import java.util.Arrays;
/**问题描述:从扑克牌中随机抽5张牌,判断是不是顺子。
* 其中大小王可以看成任意的数字
* Created by lxq on 2017/9/19.
*/
public class Problem2 {
public static void main(String[] args){
Problem2 test = new Problem2();
int[] number = {0,0,1,6,7};
boolean result = test.isContinues(number);
System.out.println(result);
}
public boolean isContinues(int[] number){
if(number==null){
return false;
}
Arrays.sort(number);
int numberZero = 0;//假设大小王为0
int numberGap = 0;//数字之间的间隔
for(int i=0;i<number.length&&number[i]==0;i++){
numberZero++;
}
// 0 0 1 4 5
int small = numberZero;
int big = small+1;
while(big<number.length){
if(number[small]==number[big]) //有对子的话是错的
return false;
numberGap += number[big]-number[small]-1; //中间间隔的数字数量
small=big;
big++;
}
return (numberGap>numberZero)?false:true;
}
}