华为机试题【3】
2016-07-03 22:36
225 查看
题目:
扑克牌游戏大家应该都比较熟悉了,一副牌由54张组成,含3~A,2各4张,小王1张,大王1张。牌面从小到大用如下字符和字符串表示(其中,小写joker表示小王,大写JOKER表示大王):)3 4 5 6 7 8 9 10 J Q K A 2 joker JOKER
输入两手牌,两手牌之间用“-”连接,每手牌的每张牌以空格分隔,“-”两边没有空格,如:4 4 4 4-joker JOKER
请比较两手牌大小,输出较大的牌,如果不存在比较关系则输出ERROR
基本规则:
(1)输入每手牌可能是个子,对子,顺子(连续5张),三个,炸弹(四个)和对王中的一种,不存在其他情况,由输入保证两手牌都是合法的,顺子已经从小到大排列;(2)除了炸弹和对王可以和所有牌比较之外,其他类型的牌只能跟相同类型的存在比较关系(如,对子跟对子比较,三个跟三个比较),不考虑拆牌情况(如:将对子拆分成个子)
(3)大小规则跟大家平时了解的常见规则相同,个子,对子,三个比较牌面大小;顺子比较最小牌大小;炸弹大于前面所有的牌,炸弹之间比较牌面大小;对王是最大的牌;
(4)输入的两手牌不会出现相等的情况。
答案提示:
(1)除了炸弹和对王之外,其他必须同类型比较。(2)输入已经保证合法性,不用检查输入是否是合法的牌。
(3)输入的顺子已经经过从小到大排序,因此不用再排序了.
思路分析:
根据题意3是最小的,JOKER是最大的,所以要确定比赛规则,字面是没法比较大小的,做一个转换,根据下标来比较,return “345678910JQKA2jokerJOKER”.indexOf(str);首先大小王是最大的,如果存在就输出,排除大小王的情况
每种类型可以通过长度来确定,接下来就是炸弹特殊了,炸弹可以和各种情况比较,首先一方是炸弹李一方不是,输出炸弹
除了炸弹只有长度相同才能比较,长度不同,输出error,长度相同,比较第一个数字
代码:
public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String[] left,right; String[] line; String nextLine,outString; while(sc.hasNext()){ nextLine = sc.nextLine(); //有王炸就王炸最大 if(nextLine.contains("joker JOKER")){ outString = "joker JOKER"; }else{ //拆分 先拆成左右 再拆成单排 line = nextLine.split("-"); left = line[0].split(" "); right = line[1].split(" "); //炸弹最大 if(left.length == 4 && right.length != 4){ outString = line[0]; }else if(right.length == 4 && left.length != 4){ outString = line[1]; } // 牌数相同的情况下比较最小的牌的大小,compare方法返回牌所对应的值 else if(right.length == left.length){ if(count(left[0])>count(right[0])){ outString = line[0]; } else{ outString = line[1]; } }else{ outString = "ERROR"; } } System.out.println(outString); } } //2-JOKER 按大小返回2-16 private static int count(String str) { return "345678910JQKA2jokerJOKER".indexOf(str); } }
参考:
http://www.nowcoder.com/test/question/done?tid=3641471&qid=25369#summary
我的微信二维码如下,欢迎交流讨论
欢迎关注《IT面试题汇总》微信订阅号。每天推送经典面试题和面试心得技巧,都是干货!
微信订阅号二维码如下:
相关文章推荐
- ORB:新一代 Linux 应用
- 191. Number of 1 Bits
- VC 取得系统是什么语种的方法
- 删除链表奇数元素
- iOS开发的22个奇葩技巧
- UDP数据包大小分析
- ios推送相关资料整理
- spring proxy-target-class
- VC下获取各个驱动器路径,分类及其获取其信息的资料整理
- 管道用于进程通信的实现
- 软件工程个人日报 2016/7/3
- 不同类型文件默认的颜色
- webix源码阅读
- 《抗癌前线:癌症研究的前沿进展》:肿瘤基因组学博士的肿瘤科普,三星推荐
- Xcode软件软件中的一些常见单词翻译
- POJ 1995 快速幂
- 获取本机通讯薄的内容
- eclipse/myeclipse空间报错解决方法
- LeetCode-Add Binary
- Python Web 5 —— 错误捕获和错误页