题目:从扑克牌中随机抽5 张牌,判断是否是一个顺子,即这5 张牌是否是连续的。2-10 为数字自己,A 为1,J,为11,Q 为12,K 为13,而大小王能够当作任意数字。java
tip:将取出的5张牌排序并假定大小王为0,则会出现三种状况;数组
一、5张牌中没有王,则5张牌的数字必须为连续,即间隔为0dom
二、5张牌中有一个王,则容许出现间隔为1的状况blog
三、5张牌中有两个王,则容许出现间隔为2的状况排序
public static void main(String[] args) { Random random = new Random(); int[] array = new int[5]; for (int i = 0; i < array.length; i++) { array[i] = i + 10 * random.nextInt(1); } // 将数组排序,并假定大小王为0 Arrays.sort(array); if (array[0] > 0) {// 5张牌中没有王 checkGap(array, 0, 4, 0); } else if (array[0] == 0 && array[1] != 0) {// 5张牌有一个王 checkGap(array, 1, 4, 1); } else {// 5张牌有两个王 checkGap(array, 2, 4, 2); } } /** *allowGap,可能出现的间隔数 */ private static void checkGap(int[] array, int start, int end, int allowGap) { int from = start; while (from < end) { allowGap -= array[from + 1] - array[from] - 1; if (allowGap < 0) { return; } from++; } }