题解 | #扑克牌顺子#
扑克牌顺子
http://www.nowcoder.com/practice/762836f4d43d43ca9deb273b3de8e1f4
function IsContinuous(numbers)
{
// write code here
//首先判断除了0有没有重复的数字,如果重复直接返回false,否则继续执行代码;先剔除0,然后再判断
let judArr = numbers.filter(item =>item != 0)
judArr=judArr.sort()
for(let i =0;i<judArr.length;i++){
if(judArr[i] ==judArr[i+1]){return false}
}
//计算0的个数
let num = 0;
let index = numbers.indexOf(0);
while(index != -1){
num++
index = numbers.indexOf(0,index+1)
}
//如果4个0,直接返回真
if(num == 4 ){
return true
}
// 如果没有0,将数组先sort排序,直接看最后一项减第一项的值是否等于数组长度。
if (num == 0){
let arr=numbers.sort()
let len = arr.length
return arr[len-1]-arr[0] ==len-1?true:false
}
//如果有一个0,将数组sort排序,最后一项减第二项的值是否小于数组长度。
if (num == 1){
let arr=numbers.sort()
let len = arr.length
return arr[len-1]-arr[1] <len?true:false
}
//如果有两个0,将数组sort排序,最后一项减第三项的值小于数组长度。
if (num == 2){
let arr=numbers.sort()
let len = arr.length
return arr[len-1]-arr[2] <len?true:false
}
//如果有三个0,将数组先sort排序,直接看最后一项减第四项的值是否小于数组长度。
if (num == 3){
let arr=numbers.sort()
let len = arr.length
return arr[len-1]-arr[3] <len?true:false
}
}
module.exports = {
IsContinuous : IsContinuous
};