【蓝桥杯】扑克牌中的顺子(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);
	}

}
经验分享 程序员 微信小程序 职场和发展