【蓝桥杯】扑克牌中的顺子(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); } }
上一篇:
通过多线程提高代码的执行效率例子