华为OD机试真题-扑克牌大小【2023】【JAVA】

news/2024/11/23 16:48:51/

在这里插入图片描述

一、题目描述

扑克牌游戏大家应该都比较熟悉了,一副牌由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. 输入的两手牌不会出现相等的情况。

数据范围:字符串长度:3≤s≤10 。

二、输入描述

输入两手牌,两手牌之间用"-“连接,每手牌的每张牌以空格分隔,”-"两边没有空格,如 4 4 4 4-joker JOKER。

三、输出描述

输出两手牌中较大的那手,不含连接符,扑克牌顺序不变,仍以空格隔开;如果不存在比较关系则输出ERROR。

四、Java算法源码

public static void main(String[] args) {Scanner in = new Scanner(System.in);while (in.hasNext()) {String s = in.nextLine();String[] arr = s.split("-");System.out.println(helper(arr[0], arr[1]));}
}private static String helper(String s1, String s2) {HashMap<String, Integer> map = new HashMap<String, Integer>() {{put("A", 14);put("2", 15);put("3", 3);put("4", 4);put("5", 5);put("6", 6);put("7", 7);put("8", 8);put("9", 9);put("10", 10);put("J", 11);put("Q", 12);put("K", 13);put("joker", 16);put("JOKER", 17);}};if (s1.equals("joker JOKER") || s1.equals("JOKER joker")) {return s1;} else if (s2.equals("joker JOKER") || s2.equals("JOKER joker")) {return s2;}String[] arr1 = s1.split(" ");int n1 = map.get(arr1[0]);String[] arr2 = s2.split(" ");int n2 = map.get(arr2[0]);if (isBoom(s2) && isBoom(s1)) {return n1 > n2 ? s1 : s2;} else if (isBoom(s2)) {return s2;} else if (isBoom(s1)) {return s1;} else if (arr1.length == arr2.length) {return n1 > n2 ? s1 : s2;} else {return "ERROR";}
}private static boolean isBoom(String s1) {String[] temp = s1.split(" ");if (temp.length != 4) return false;String cur = temp[0];for (int i = 1; i < 4; i++) {if (!cur.equals(temp[i])) return false;}return true;
}

五、效果展示

在这里插入图片描述


🏆本文收录于,华为OD机试(JAVA)(2022&2023)

本专栏包含了最新最全的2023年华为OD机试真题,有详细的分析和Java解答。已帮助1000+同学顺利通过OD机考。专栏会持续更新,每天在线答疑。

在这里插入图片描述


http://www.ppmy.cn/news/59572.html

相关文章

Linux 系统[centos8.2]上启动 Samba 服务

要在 Linux 系统上启动 Samba 服务&#xff0c;请按照以下步骤操作&#xff1a; 安装 Samba 服务。在大多数 Linux 发行版上&#xff0c;您可以使用以下命令来安装 Samba&#xff1a; sudo apt-get install samba配置 Samba。在 Linux 系统上&#xff0c;Samba 的配置文件位于 …

API接口发展趋势以及淘宝API接口的用途

API接口的发展史可以分为以下几个阶段&#xff1a; 远程过程调用(RPC)&#xff1a;早期的API一般是使用RPC方式实现的&#xff0c;它基于类似于在本地调用函数的方式进行远程通信。这种方式需要客户端和服务器端都采用相同语言和平台&#xff0c;因此不够灵活&#xff0c;在跨平…

低代码,一招制敌,解决职场人的的办公难题

“站在巨人的肩膀上让你事半功倍”&#xff0c;本文阐释如何使用低代码工具成倍提高生产力&#xff0c;不管是个人还是企业&#xff0c;值得一看&#xff0c;都将受益。 作为一个卑微的打工人&#xff0c;以下任何一个场景都会让我头皮发麻&#xff1a; 领导要你30分钟内汇总…

C++每日一练:小艺照镜子(详解分治法)

文章目录 前言一、题目二、解题1.分析 总结 前言 大过节的&#xff0c;不想去看人后脑勺&#xff0c;就做点题来玩。挑了小艺照镜子&#xff0c;百分通过~ 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、题目 题目名称&#xff1a; 小艺照镜子 …

钴基双金属氧化物储能材料的高效制备和电化学应用

一、引言 钴金属氧化物作为一类典型的储能材料&#xff0c;既可以用于锂离子电池负极材料&#xff0c;又可以用于超级电容器电极材料&#xff0c;因而备受关注 。在作为锂离子电池负极材料时&#xff0c;具有较高的理论比容量&#xff0c;但充放电体积变化较大、材料导电性较差…

毕业-单片机-嵌入式~三年经历回顾

入行嵌入式软件开发 20年6月疫情第一次缓和、实操51单片机&#xff1b;20年9月郑州实习、温湿度采集类低功耗产品、初次接触ARM Cortex M0/M3 单片机&#xff1b;21年5月毕业来到杭州、不懂应届生的宝贵青春&#xff01;匆匆忙忙进厂&#xff5e;人生中第一个项目&#xff1a;…

TypeScript教程(N)

弱类型和强类型 编程语言&#xff0c;按照数据类型是否固定可分为 强类型语言 和 弱类型语言。 弱类型语言 弱类型语言&#xff1a;变量、函数参数和函数的返回值&#xff0c;是没有类型的&#xff0c;一个变量可以接收任何类型的数据&#xff0c;一个函数也可以返回任何类型…

【谷粒商城之消息队列RabbitMQ】

本笔记内容为尚硅谷谷粒商城消息队列RabbitMQ部分 目录 一、概述 二、简介 三、Docker安装RabbitMQ 四、Springboot整合RabbitMQ 1、引入spring-boot-starter-amqp 2、application.yml配置 3、测试RabbitMQ 1. AmqpAdmin-管理组件 2.RabbitTemplate-消息发送处理组件…