题目解析
先看一个例子:
3 4 5 6 6 7 7 8 9 10
这个例子该输出什么呢?
如果是优先最长顺子的话,那么应该输出:
3 4 5 6 7 8 9 10
如果是优先最多顺子的话,那么应该输出:
3 4 5 6 7
6 7 8 9 10
当前博客解法是按照 “优先最长顺子” 实现的
优先最长顺子解法
我的解题思路如下:
首先定义一个card2Num方法,即将字符串牌面 映射为 数值。具体映射关系可看代码中card2Num方法的实现。
然后,将输入的牌数组,按照card2Num映射的数值,进行升序排序。
之后,我创建多个顺子容器,外层遍历牌数组,内层遍历顺子容器:
- 如果顺子容器是空的,则直接将当前牌加入该顺子容器
- 如果顺子容器不是空的,则比较当前牌cur 和 顺子容器尾牌tail
- 如果cur - tail = 1,则当前牌cur可以加入当前顺子尾部。
- 如果cu