【蓝桥杯】扑克牌中的顺子(Java实现)
从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。2~10为数字本身,A为1,J为11, Q为12,K为13,而大、小王为0,可以看成任张数字。A不能视为14。
示例1: 输入: 1 2 3 4 5 输出: True
示例2: 输入: 0 0 1 2 5 输出: Ture
限制: 数组长度为5 数组的数取值为[0, 13]
import java.util.*;
public class Main {
public static void main(String[] args) {
// TODO 自动生成的方法存根
Scanner sc= new Scanner(System.in);
int[] array=new int[5];
boolean bool=true;
int zeroCount=0;
//用户输入
for(int i=0;i<5;i++)
{
array[i]=sc.nextInt();
if(array[i]==0)
{
//判断0的个数
zeroCount++;
}
}
//数组降序排列
for(int i=0;i<5;i++)
{
for(int j=i+1;j<5;j++)
if(array[i]<array[j])
{
//数据交换
array[i]=array[i]+array[j];
array[j]=array[i]-array[j];
array[i]=array[i]-array[j];
}
}
//查找数组中是否存在重复
for(int i=1;i<5;i++)
{
if(array[i]==array[i-1]&&array[i]!=0)
{
zeroCount=-1;
bool=false;
}
}
//有0的情况
if(zeroCount>0)
{
int count=0;
//查询数组非0值得间隔距离
for(int i=1;i < 5-zeroCount;i++)
{
count+=array[i-1]-array[i]-1;
}
//间隔值与0的个数进行比较
if(zeroCount<count)
{
bool=false;
}
}
//非0数的顺子
if(zeroCount==0)
{
for(int i = 1;i < 5;i++)
{
if(array[i-1]+1!=array[i])
{
bool=false;
break;
}
}
}
//输出
System.out.println(bool);
}
}
上一篇:
通过多线程提高代码的执行效率例子
