相信很多人都玩过扑克牌。在扑克牌中,有许许多多的算法供我们学习。仅仅一个斗地主游戏,就可以学习很多的算法。今天和大家分享一个判断扑克牌中的顺子的问题。
题目:
从扑克牌中随机抽取五张牌,判断是不是一个顺子。其中A为1,J为11,Q为12,K为13,大小王可以看成任意数字(即籁子)。
题目分析:
首先我们来抽象一下这个题目。首先,我们可以把大小王看成是0,五张牌看成由5个数字组成的数组。判断这五张牌是不是连续的,最直观的方式就是对数组进行排序。由于0可以当成是任意数字,我们可以用0去补满数组中的空缺。如果排序之后的数组不是连续的,即相邻数字相隔若干个数字,那么我们只要有足够的0可以补满这两个数字之间的空缺,这个数组实际上就是连续的。
于是,我们需要做三件事:首先数组排序;其次统计数组中的0的个数;最后统计排序之后的数组中相邻数字之间的空缺总数。如果空缺总数小于或者等于0的个数,那么这个数组就是连续的,反之则不连续。
我们还要注意一点:如果数组中非0数字重复出现,那么这个数组就是不连续的,可以直接返回结果。