【去哪儿旅行笔试题】德州扑克

题目描述

德州扑克的花型由N张扑克牌组成(N<8),可以组成的牌型按照价值从高到低来区分分别为:

  1. 皇家同花顺:最高为Ace(一点)的同花顺。 如:A K Q J 10的同花顺

  2. 同花顺:同一花色,顺序的牌。 如:K Q J 10 9的同花顺

  3. 四条:有四张同一点数的牌。 如:4 4 4 4 9

  4. 葫芦:三张同一点数的牌,加一对其他点数的牌。 如:3 3 3 10 10

  5. 同花:五张同一花色的牌。 如:J 10 8 7 5的全是红桃的牌

  6. 顺子:五张顺连的牌。 如:5 4 3 2 A的非同花牌(此牌型为最小的顺子)

  7. 三条:仅有三张同一点数的牌,其余两张点数不同。 如:9 9 9 5 3

  8. 两对:两张相同点数的牌,加另外两张相同点数的牌。 如:K K 5 5 2

  9. 一对:仅有两张相同点数的牌。 如:10 10 9 4 2

  10. 高牌:不符合上面任何一种牌型的牌型,由单牌且不连续不同花的组成,以点数决定大小。 如:A 10 9 5 3的非同花的牌

这十种牌型分别输出:“HuangJiaTongHuaShun”、“TongHuaShun”、“SiTiao”、“HuLu”、“TongHua”、“ShunZi”、“SanTiao”、“LiangDui”、“YiDui”、“GaoPai”。

(扑克牌有4种花色,分别为(S表示黑桃,H表示红心,C表示草花,D表示方片))

本题的输入为任意小于8的N张牌,得到的结果为这些牌中排序最靠前的类型。

Java代码

import java.util.Arrays;public class Main {public static void main(String[] args) {//皇家同花顺System.out.println(showDown("SA SK SQ SJ S10 H10 C9"));//同花顺System.out.println(showDown("S2 S4 S5 S6 S3 H10 C9"));//四条System.out.println(showDown("S2 SK H2 C2 S10 D2 C9"));//葫芦System.out.println(showDown("S10 SK C10 CK S9 H10 C9"));//同花System.out.println(showDown("SA S2 S6 SJ S10 H10 C9"));//顺子System.out.println(showDown("S4 H5 C7 D6 S3 H8 C9"));//三条System.out.println(showDown("SA HA CA S2 SJ H10 C9"));//两对System.out.println(showDown("C4 S4 D10 SJ S10 HJ C9"));//1对System.out.println(showDown("C4 S4 DA SQ S10 HJ C9"));//高牌System.out.println(showDown("C4 S5 DA SQ S10 HJ C9"));}public static String showDown (String inHand) {// write code hereString[] str = inHand.split(" ");//统计每个花色的扑克情况int[] S=new int[15];int[] H=new int[15];int[] C=new int[15];int[] D=new int[15];//统计每个值的出现次数int[] nums=new int[15];for(int i=0;i<str.length;i++){int num=0;String tmp=str[i].substring(1);if(tmp.equals("A")){num=1;}else if(tmp.equals("J")){num=11;}else if(tmp.equals("Q")){num=12;}else if (tmp.equals("K")){num=13;}else{num=Integer.valueOf(tmp);}switch (str[i].charAt(0)){case 'S':{S[num]++;if(num==1){S[14]++;}break;}case 'H':{H[num]++;if(num==1){H[14]++;}break;}case 'C':{C[num]++;if(num==1){C[14]++;}break;}case 'D':{D[num]++;if(num==1){D[14]++;}break;}}nums[num]++;if(num==1){nums[14]++;}}//皇家同花顺if((S[1]==1 && S[10]==1 && S[11]==1 && S[12]==1 && S[13]==1 )|| (H[1]==1 && H[10]==1 && H[11]==1 && H[12]==1 && H[13]==1 ) || (C[1]==1 && C[10]==1 && C[11]==1 && C[12]==1 && C[13]==1 ) || (D[1]==1 && D[10]==1 && D[11]==1 && D[12]==1 && D[13]==1 )){return "HuangJiaTongHuaShun";}//同花顺int time=0;for(int i=1;i<15;i++){if(S[i]>0){time++;}else{time=0;}if(time>=5){return "TongHuaShun";}}time=0;for(int i=1;i<15;i++){if(H[i]>0){time++;}else{time=0;}if(time>=5){return "TongHuaShun";}}time=0;for(int i=1;i<15;i++){if(C[i]>0){time++;}else{time=0;}if(time>=5){return "TongHuaShun";}}time=0;for(int i=1;i<15;i++){if(D[i]>0){time++;}else{time=0;}if(time>=5){return "TongHuaShun";}}//四条for(int i=1;i<14;i++){if(nums[i]>=4){return "SiTiao";}}//葫芦int time_3=0;int time_2=0;for(int i=1;i<14;i++){if(nums[i]>=3){time_3++;}else if(nums[i]==2){time_2++;}}if(time_3>=2 || time_3==1 && time_2>=1){return "HuLu";}//同花if(Arrays.stream(S).sum()>=5 || Arrays.stream(H).sum()>=5 || Arrays.stream(C).sum()>=5 || Arrays.stream(D).sum()>=5 ){return "TongHua";}//顺子time=0;for(int i=1;i<15;i++){if(nums[i]>0){time++;}else{time=0;}if(time>=5){return "ShunZi";}}//三条if(time_3==1 && time_2==0){return "SanTiao";}//两对if(time_3==0 && time_2>=2){return "LiangDui";}//一对if(time_3==0 && time_2==1){return "YiDui";}return "GaoPai";}
}

运行结果

复杂度分析

虽然题目看着比较复杂,但是根据题目意思进行模拟还是比较简单的,需要注意switch代码块的每个case里面需要break跳出。

时间复杂度:O(1)

空间复杂度:O(1)

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/70883.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

百度面试题——迷宫问题(超详细解析)

文章目录 一、迷宫问题1.思路1.整体思想2.如何区分走过的路与没有走过的路3.遇到死路时&#xff0c;如何回溯 2. 整体过程详细分析2.动态开辟二维数组3.内存销毁4.用一个栈转移循环栈中的数据5. getmazepath(maze, N, M, next)判断是否为真6. 整体代码 一、迷宫问题 定义一个二…

【操作系统和强化学习】1.内存管理策略

文章目录 前言1.内存是什么1.1 基本硬件1.1.1 保护措施 1.1.2 碎片1.2 分段机制1.2.1 分段硬件1.3 分页1.4 虚拟存储请求分页储存管理:页面置换方法1.4 程序运行的必要条件1.4.1 链接1.4.2 各种地址 1.5 连续储存管理1.5.1 单一连续分区1.5.2 固定分区1.5.2 可变分区1.5.6 分区…

通过chatGPT学习:kubernetes中的list-watch机制介绍

1、 请解释一下&#xff0c;在kubernetes中的list-watch机制&#xff1f; Kubernetes是一个开源的容器编排和管理系统&#xff0c;它可以有效地管理大规模的容器化应用程序。 在Kubernetes中&#xff0c;list-watch机制是一种重要的机制&#xff0c;用于监视资源的变化并及时…

【chatGPT】让java程序员工作效率翻10倍技巧

本来写给我自己用来着, 想着以后忘记了就分享出来 1.写枚举 对于程序员来说枚举的命名需要大写并且写枚举也是被迫的(大部分人的感受都一样啊喂) 所以可以直接用chatgpt偷懒 录入关键字 : 例:帮我写个java枚举 xxxxx (活动兑奖状态&#xff0c;0待开始&#xff0c;1兑奖中 ,2…

国内晶圆代工现状简析,与国外差距又在哪里?

从去年的科技战开始&#xff0c;美国频频用芯片作为筹码来遏制中国科技产业的发展&#xff0c;使得科技产业不能自主。在这样的大环境下&#xff0c;做大做强自家芯片成为亟不可待的任务。然而&#xff0c;目前中国芯片发展存在诸多困难。在半导体产业链中&#xff0c;中国目前…

芯片全产业链:【设计】-【制造(原材料+制造装备+代工)】-【封装】

http://www.elecfans.com/d/671198.html 国内芯片产业链及主要厂商梳理,芯片的各个细分领域龙头有哪些呢&#xff1f; 1.芯片设计 1.1 芯片设计软件-EDA verilog HDL/传统原理图输入法 关系 HDL和传统原理图输入法的关系就好比高级语言与汇编语言的关系 参考&#xff1a…

芯片供应最难的居然是TI,交期拉长

关注星标公众号&#xff0c;不错过精彩内容 来源 | 芯头条 据台媒报道&#xff0c;全球供应链相当长又复杂&#xff0c;各业者按其所处产业与地位&#xff0c;供需状况其实不同&#xff0c;也就是所面对的缺货、长短料与需求反转的感受不一。但整体来看&#xff0c;随着疫情缓解…

2021年全球晶圆代工营收市占分布预测

原网址&#xff1a; https://xueqiu.com/6828609820/167031894 根据TrendForce集邦咨询旗下半导体研究处表示&#xff0c;2020年上半年全球半导体产业受惠于疫情导致的恐慌性备料&#xff0c;以及远距办公与教学的新生活常态&#xff0c;下半年则因华为禁令的提前拉货&#xf…

晶圆涨、封测涨、芯片涨、材料涨…涨价的野火烧到哪了?

作者&#xff1a;小芯&#xff0c;排版&#xff1a;橡皮 微信公众号&#xff1a;芯世相&#xff08;ID&#xff1a;xinpianlaosiji&#xff09; 继8寸晶圆产能紧缺涨价、半导体元器件上涨、覆铜板等原材料上涨后&#xff0c;由晶圆紧缺引发的“多米诺骨牌”开始逐步蔓延&#x…

涨超10%!国内最大MEMS晶圆代工厂成功上市!市值超400亿!

今日&#xff08;5月10日&#xff09;&#xff0c;中国传感器产业史上又一标志性事件诞生——中国大陆目前规模最大、技术最先进的 MEMS 晶圆代工厂——中芯集成成功上市&#xff01; 本次上市&#xff0c;中芯集成募集资金达百亿&#xff0c;是中国MEMS制造产业慕资规模最大的…

签千亿订单,中芯国际可量产3nm芯片?

本文转载自IT之家&#xff0c;IT之家 3 月 3 日消息 中芯国际发布公告称&#xff0c;公司就购买用于生产晶圆的阿斯麦产品与阿斯麦集团签订购买单&#xff0c;根据阿斯麦购买单购买的阿斯麦产品定价&#xff0c;阿斯麦购买单的总代价为 1201598880 美元。 据介绍&#xff0c;中…

中国12家厂商”逐鹿“国产替代,国产MCU选型合集来了

扫码报名直播领取 MCU厂家选型合集手册.PDF 前言 据统计&#xff0c;整体MCU价格在8月大幅下行后&#xff0c;9月下行趋势减缓&#xff0c;价格下跌型号数量明显减少&#xff0c;整体价格企稳。 在中国市场&#xff0c; 物联网和边缘计算等新兴应用对MCU有着强大的需求&#x…

【电巢】电源管理芯片:国产化替代厂家竞逐千亿黄金赛道

前言 整个2022年三季度&#xff0c;全国新能源电动车的起火已高达600多起&#xff0c;同比上升了30%多&#xff0c;如果具体到每天来看&#xff0c;平均每天都有超过7起新能源电动车火灾发生。 7月22日&#xff0c;台湾省专业赛车手林某颖驾驶着一辆白色特斯拉Model X&#xff…

第六大晶圆代工厂商2021净利润大增593.3%

3月29日&#xff0c;华虹半导体发布2021全年业绩公告&#xff0c;销售收入创历史新高&#xff0c;达16.31亿美元&#xff0c;较上年度增长69.6%&#xff1b;净利润为2.31亿美元&#xff0c;较2020年上升593.3%。 公告指出&#xff0c;华虹半导体销售收入增长因付运晶圆增加及平…

代码恐怖故事:揭秘形成复杂代码库的常见原因

【编者按】本文主要分享一些开发者在软件开发行业中遇到的复杂代码库所带来的问题和挑战。本文列举了造成复杂代码库的常见原因&#xff1a;过分抽象、过度通用化、虚假的测试覆盖、对过时技术的过度热衷、缺乏架构设计、缺少代码版本控制等。文章还强调了管理层对复杂代码块问…

前端使用后端回传的url,显示图片的使用方法

前言 在开发过程中&#xff0c;有时需要动态的添加后端回传的指定url图片。但如果直接使用图片路径充当url&#xff0c;这时就会存在这样一个问题&#xff1a;后端的图片已经变了&#xff0c;但是前端的图片还是原来的。 原因 这是因为浏览器有缓存的功能。如果后端回传的ur…

图片转base64的几种场景(网络图片,本地图片,用户上传图片)

转载于博客园 https://www.cnblogs.com/zhangdiIT/p/7895903.html 写的很棒 推荐给大家 场景一&#xff1a;将用户本地上传的资源转化&#xff0c;即用户通过浏览器点击文件上传时&#xff0c;将图片资源转化成base64&#xff1a; <input type"file" id"im…

C实现响应浏览器HTTP GET请求上传图片

参考链接&#xff1a; 1.C 实现一个简易的Http服务器 https://www.cnblogs.com/life2refuel/p/5277111.html 2.C&#xff1a;C语言实现HTTP的GET和POST请求 https://www.cnblogs.com/diligenceday/p/6255788.html 因为工作需要&#xff0c;需要实现在嵌入式设备上响应浏览器的…

input file 实现上传预览图片,以base64上传,兼容IE8+,firefox,chrome

前言 最近在公司开发一个项目&#xff0c;其中涉及到一个公能&#xff0c;主要是上传一些小图片&#xff0c;而且在网站上需要大量引用这个小图片的&#xff0c;对于上传一些小的头像等。一开始觉得直接上传就好了&#xff0c;但是发现这样子的话&#xff0c;一个小图片就会发…

关于微信内置浏览器,打开图片上传功能,调用的问题

关于微信内置浏览器&#xff0c;打开图片上传功能&#xff0c;调用的问题 前段时间&#xff0c;项目完结测试的时候&#xff0c;同事打开魅族手机测试&#xff0c;无意中发现一个奇葩的问题&#xff01; 描述&#xff1a; 显示的是文件系统&#xff0c;列表式的&#xff0c;没有…