最短验证是否是同花顺
['as', '10h', '9d', 'qc', '3h']
'as'
= 'a'
是'A','s'
是花色
这样一个array,需要写一个function用最短的字符验证是否为顺子或者同花顺
写了半天,最简单的也需要很多行,说是有人用70个字符完成过,感觉不太可能。。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
利用了位操作符, 可以方便的判断顺子, 无需进行排序.
我没学过php,给你一个思路吧。
1.建立一个数字到扑克数字的映射(a[1]='1',a[2]='2'....a[11]='j'...)
2.建立另一个数字到扑克花色的映射(b[1]='s',b[2]='h'...)
3.利用1,2写一个2重循环建立一个牌型到值的映射(c[a[i].b[j]]=i+j*100)
4.利用映射关系对你的数组进行排序,接下来检测每个相邻元素之间的值的差均为1即可
代码行数尚可,没有利用可能存在的语言特性,不够优美。优点是映射关系只要建立1次,以后重复步骤4即可